MySQL 是否按照写入的顺序执行查询?
Does MySQL execute a query in the order it is written?
MySQL是否按照写入的顺序执行查询?
我注意到有时别名(例如在下面:customers AS c)在使用别名后排在一行中。通常在其他编程中,您先声明一个变量,然后再使用它。但是在 Mysql 我见过这样的事情:
SELECT SUM(balance) AS Total,
COUNT(account_id) AS Number,
CONCAT(c.last_name, ', ', c.first_name) AS Name
FROM accounts AS a
INNER JOIN customers AS c
USING (customer_id)
GROUP BY (a.customer_id) ORDER BY Name;
CONCAT(c.last_name, ', ', c.first_name)
如何在customers AS c 直到倒数第三行才出现?而且它不会导致错误。
我觉得你的问题其实很好
这样想:
一旦你知道从哪里 select 它就不能 select 任何东西。
同样,您不能在 selected 之前订购任何东西。
因此,当您在表名上创建别名时,mysql 可以在 selection 部分使用它。
当您在 selection 部分创建别名时,mysql 可以在 order 部分使用它。
我希望这能为您澄清。如果这能为您解答,请告诉我。
在 sql 中,代码按特定顺序求值:
- 首先评估 FROM 子句和相关别名
- 然后WHERE条件
- 之后是 SELECT 子句
- 最后是 GROUP BY、HAVING 子句和 ORDER BY
因此 table 别名在 select 时间是众所周知的。
MySQL是否按照写入的顺序执行查询?
我注意到有时别名(例如在下面:customers AS c)在使用别名后排在一行中。通常在其他编程中,您先声明一个变量,然后再使用它。但是在 Mysql 我见过这样的事情:
SELECT SUM(balance) AS Total,
COUNT(account_id) AS Number,
CONCAT(c.last_name, ', ', c.first_name) AS Name
FROM accounts AS a
INNER JOIN customers AS c
USING (customer_id)
GROUP BY (a.customer_id) ORDER BY Name;
CONCAT(c.last_name, ', ', c.first_name)
如何在customers AS c 直到倒数第三行才出现?而且它不会导致错误。
我觉得你的问题其实很好
这样想: 一旦你知道从哪里 select 它就不能 select 任何东西。 同样,您不能在 selected 之前订购任何东西。
因此,当您在表名上创建别名时,mysql 可以在 selection 部分使用它。 当您在 selection 部分创建别名时,mysql 可以在 order 部分使用它。
我希望这能为您澄清。如果这能为您解答,请告诉我。
在 sql 中,代码按特定顺序求值:
- 首先评估 FROM 子句和相关别名
- 然后WHERE条件
- 之后是 SELECT 子句
- 最后是 GROUP BY、HAVING 子句和 ORDER BY
因此 table 别名在 select 时间是众所周知的。