TOP 1在sql查询中的含义是什么?
在该示例中的查询将从表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。
不一定是正确的。我发布了一个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
另请参阅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行,即第一行。
它限制从查询返回的行数修正订单信息只是1.它与MySQL中的限制1相同。
我不同意“订单将根据该表中的聚集键进行定义。”
SQL Server Books Online is quite explicit: 如果查询没有ORDER BY子句,则行的顺序是任意
一个摄制证明,认为这并非总是如此:Without ORDER BY, there is no default sort order.
这意味着只需要第n行。你需要一个“order by”来定义第一行是什么。 – dotjoe 2009-05-20 14:40:41