在Leetcode中,对于问题https://leetcode.com/problems/big-countries/,如果我给出这个解决方案:
SELECT
name,
population,
area
FROM
World
WHERE
25000000 < population OR 3000000 < area;
执行正确。
然而,这个解决方案:
FROM
World
SELECT
name,
population,
area
WHERE
25000000 < population OR 3000000 < area;
返回错误。
为什么?我认为顺序是无关紧要的,因为SQL服务器将决定自己的执行顺序。第二种顺序也更接近执行的逻辑顺序,详见:https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15#logical-processing-order-of-the-select-statement .
SQL是一种非常特殊的语言。语言的一部分是SELECT
语句,它由各种子句组成。
常用子句有:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY
这些子句中,SELECT
是必需的。FROM
在某些数据库中是必需的,其余的是可选的。每个子句都有自己的语法。
SQL语言定义了语句中子句的排序;顺序是固定的。任何其他排序将导致语法错误。
这就是语言的定义方式。你不妨问问为什么日语的词序在英语中行不通。这不是英语的定义。