T-Sql用于从表中获取第五行

时间:2015-08-08 08:37:44

标签: sql-server-2008

我在从表格中提取第5行时发现了一个非常奇怪的事情我使用了下面提到的查询并且认为可能首先取前5行,然后在外部查询中按顺序排序前1订购。但是下面的查询输出错误。

select top 1 * 
from 
     (select * 
      from 
          (select top 5 BusinessEntityID, FirstName, LastName 
           from person.person) as a 
     ) as b
order by 
    b.BusinessEntityID desc

这个查询给了我最后一行而不是第五行。我知道这可以通过row_number()函数轻松实现,但我想知道为什么上面的查询输出错误。

1 个答案:

答案 0 :(得分:3)

我相信你错过了ORDER BY查询中的TOP 5。您可以删除其中一个SELECT *

select top 1 * 
from (
    select top 5 BusinessEntityID,FirstName,LastName 
    from person.person
    order by BusinessEntityID asc
) as a
order by a.BusinessEntityID desc

另外,你是对的,这对于ROW_NUMBER来说会更简单。