我对 SQL 查询的执行顺序感到困惑。
例如, (Inner join
in MySQL
在下面的代码中),之间WHERE
条款和SELECT * FROM
子句,哪一个首先被解释和执行?
也就是说,下面的查询是否带来*
(全部tables data
首先找到与以下内容匹配的案例WHERE
健康)状况?或者他们只是找到列表data
与 匹配WHERE
条件然后SELECT * FROM
来自WHERE
result?
SELECT * FROM customers, orders
WHERE customers.id = orders.customer_id;
如上所述,我想知道 SQL 查询一般是如何执行的。
有一个logical查询文本的评估顺序,但数据库引擎可以根据最佳顺序选择执行查询组件的顺序。下面列出了逻辑文本解析顺序。例如,这就是为什么您不能使用以下别名:SELECT
中的条款WHERE
条款。就查询解析过程而言,别名还不存在。
-
FROM
-
ON
-
OUTER
-
WHERE
-
GROUP BY
-
立方体 | ROLLUP(这些在 MySQL 中不存在,但在其他一些 SQL 方言中存在)
-
HAVING
-
OVER(窗口函数)
-
SELECT
-
DISTINCT
-
ORDER BY
-
LIMIT(或者在 MSSQL 中为 TOP)
See Microsoft 文档(请参阅“SELECT 语句的逻辑处理顺序”) https://learn.microsoft.com/en-us/sql/t-sql/queries/select-transact-sql?view=sql-server-2017#logical-processing-order-of-the-select-statement欲了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)