有关使用Top
的问题。例如,我们有以下SQL语句:
SELECT TOP (5) WITH TIES orderid, orderdate, custid, empid
FROM Sales.Orders
ORDER BY orderdate DESC;
它先按orderdate排序返回的行,然后选择最上面的五行。
但这不是ORDER
子句之后的SELECT
子句,这意味着先返回随机的前五个顺序,然后再按orderdate对这五个行进行排序吗?
答案 0 :(得分:3)
答案 1 :(得分:1)
但这不是
ORDER
子句出现在SELECT
子句之后,这意味着 先随机返回前五个顺序,然后再返回 五行按orderdate排序?
不。 ORDER BY
在SELECT
之后进行处理,但将结果集限制为5行甚至更晚。
实际查询处理的物理细节可能会有所不同,但最终结果似乎是服务器按照orderdate
对整个表进行了排序,然后选择了前5行(或由于联系而需要更多),返回这些行并丢弃其余的行。
答案 2 :(得分:1)
问题已经被接受。但我想引用Microsoft文档中的内容。
Logical Processing Order of the SELECT statement
- 从
- 开启
- 加入
- 在哪里
- 组别
- 多维数据集或具有汇总
- 拥有
- 选择
- DISTINCT
- ORDER BY
- TOP