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

问题描述:

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

SELECT TOP 1 RequestId 
FROM PublisherRequests 
+0

这意味着只需要第n行。你需要一个“order by”来定义第一行是什么。 – dotjoe 2009-05-20 14:40:41

在该示例中的查询将从表PublisherRequests返回第RequestID
没有Order By子句的结果顺序是任意的。因此,您的示例将返回任意RequestID(即,RequestID的任意顺序列表中的第一个RequestID)。
您可以通过定义Order By来更改订单。
例如,为了获得最后输入ID,你可以写

Select Top 1 RequestID 
From PublisherRequests 
Order By RequestID Desc 

更新,包括@Kirtan Gor@AlexK

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

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

参考可以发现here

+1

不一定是正确的。我发布了一个repro,证明这并非总是如此: http://sqlblog.com/blogs/alexander_kuznetsov/archive/2009/05/20/without-order-by-there-is-no-default-sort -order.aspx – 2009-05-20 13:45:14

+0

另请参阅Conor Cunningham(MS查询优化团队)关于同一主题的博客条目 http://blogs.msdn.com/conor_cunningham_msft/archive/2008/08/27/no- seatbelt-expecting-order -without-order-by.aspx – GilaMonster 2009-05-23 15:41:44

这意味着只返回前1行,即第一行。

在TOP可用于尽可能多的行返回根据需要,或总的行的百分比包括 - 用于更多信息,请参见http://msdn.microsoft.com/en-us/library/ms189463.aspx

它限制从查询返回的行数修正订单信息只是1.它与MySQL中的限制1相同。

我不同意“订单将根据该表中的聚集键进行定义。”

SQL Server Books Online is quite explicit: 如果查询没有ORDER BY子句,则行的顺序是任意

一个摄制证明,认为这并非总是如此:Without ORDER BY, there is no default sort order.