В книге В Microsoft SQL Server™ 2005 T-SQL Querying автор Itzik Ben-Gan говорит нам, что порядок или логическая обработка запроса 2005 SQL Server:
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE | ROLLUP}
(7) HAVING <having_condition>
(10) ORDER BY <order_by_list>
1. FROM
2. ON
3. OUTER (join)
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. ORDER BY <---------------------- NOTE
11. TOP <---------------------- NOTE
В его книге В Microsoft SQL Server 2008: Запросы T-SQL, он говорит нам выполняющий логический приказ обработки запроса:
(1) FROM
(1-J1) Cartesian Product
(1-J2) ON Filter
(1-J3) Add Outer Rows
(2) WHERE
(3) GROUP BY
(4) HAVING
(5) SELECT
(5-1) Evaluate Expressions
(5-2) DISTINCT
(5-3) TOP <---------------------- NOTE
(6) ORDER BY <---------------------- NOTE
Отметьте порядок TOP и ORDER BY в верхних выборках из этих книг. Они просто противоположны. Я думаю, что эти два ступают, очень важно, и даст полностью другой результат с другим порядком. Я хочу знать, ли SQL Server, в котором 2008 изменил что-то, он - механизм устройства хранения данных от SQL Server 2005, или что-то еще рассуждает, вызывают это?
Спасибо.
Посмотрите это - это разоблачение этого вопроса - и книга Ицика упоминается. Второй порядок выше верен.