MySQL是按照它编写的顺序执行查询的吗?

时间:2017-08-22 16:59:39

标签: mysql alias

MySQL是否按照编写的顺序执行查询?

我注意到有时别名(例如下面的客户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;  

客户AS c 不发生 CONCAT(c.last_name, ', ', c.first_name) 时,如何执行 val strings = arrayOf("1", "2", "3") val ints = ints.map { it.toInt() }.toTypedArray() 直到最后一行?并且它不会导致错误。

2 个答案:

答案 0 :(得分:0)

我认为你的问题实际上非常好。

以这种方式思考: 一旦知道从哪里选择,就无法选择任何内容。 同样,在选择之前你不能订购任何东西。

因此,当您在表名上创建别名时,mysql可以在选择部分中使用它。 当您在选择部分中创建别名时,mysql可以在订单部分中使用它。

我希望这能为你澄清一下。如果能为您解答,请告诉我。

答案 1 :(得分:0)

在sql中,代码按特定顺序进行评估:

  • 首先评估FROM子句和相关的别名
  • 然后是WHERE条件
  • 之后的SELECT子句
  • 并持续GROUP BY,HAVING子句和ORDER BY

因此,表别名在选择时是完全已知的。