我对简单查询感到困惑:
SELECT * FROM table_name WHERE name = 'stack';
我的问题是这部分首先执行:
SELECT * FROM table_name
OR
WHERE name = 'stack'
首先从表中选择所有记录,然后使用WHERE条件或进行过滤 首先过滤记录然后SELECT?
有关问题的详细信息,请参阅此链接:
由于
答案 0 :(得分:5)
以下步骤显示SELECT语句的逻辑处理顺序或绑定顺序。此顺序确定在一个步骤中定义的对象何时可用于后续步骤中的子句。例如,如果查询处理器可以绑定(访问)FROM子句中定义的表或视图,则这些对象及其列可供所有后续步骤使用。相反,因为SELECT子句是步骤8,所以前面的子句不能引用该子句中定义的任何列别名或派生列。但是,它们可以由后续子句引用,例如ORDER BY子句。请注意,语句的实际物理执行由查询处理器确定,并且顺序可能与此列表不同。
FROM
ON
JOIN
WHERE
GROUP BY
WITH CUBE or WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
答案 1 :(得分:0)
首先从表中选择所有记录,然后根据指定的条件或条件按顺序过滤。