TOP 1在sql查询中的含义是什么?

moh*_*eza 3 sql-server

TOP 1在sql查询中的含义是什么?

SELECT TOP 1 RequestId 
FROM PublisherRequests
Run Code Online (Sandbox Code Playgroud)

A-K*_*A-K 17

我不同意"订单将根据该表中的聚簇键进行定义."

SQL Server联机丛书非常明确:如果查询没有ORDER BY子句,则行的顺序是任意的

一个repro,证明情况并非总是如此:没有ORDER BY,没有默认的排序顺序.


Kir*_*tan 10

它将从PublisherRequests表中选择第一行.

编辑:[订单将根据该表中的聚簇键定义 - 此语句不正确].实际上,根据Alex的调查结果,根据BOL,行的顺序是任意的.

参考可以在这里找到.


a p*_*mer 8

示例中的查询将返回RequestID表中的第一个查询PublisherRequests.
没有Order By子句的结果的顺序是任意的.因此,您的示例将返回任意值RequestID(即RequestID任意排序的RequestIDs 列表中的第一个).
您可以通过定义来更改顺序Order By.
例如,要获取最后输入的ID,您可以编写

Select Top 1 RequestID
From PublisherRequests
Order By RequestID Desc
Run Code Online (Sandbox Code Playgroud)

更新以包含来自@Kirtan Gor@AlexK的更正订单信息