如何根据行号选择行?

Keh*_*mme 9 sql t-sql sql-server sql-server-2008

我正在开发一个小项目,我需要根据记录的实际行号从临时表中选择一条记录.

如何根据行号选择记录?

asa*_*lla 24

其他几个答案涉及到这个问题,但这可能会解释.SQL(集合论)中确实没有隐含的顺序.所以要参考"第五行"需要你介绍这个概念

Select *
From 
(
    Select 
      Row_Number() Over (Order By SomeField) As RowNum
    , *
    From TheTable
) t2
Where RowNum = 5
Run Code Online (Sandbox Code Playgroud)

在子查询中,通过定义您期望的顺序来"创建"行号.现在外部查询能够从该有序集中拉出第五个条目.


RBa*_*ung 6

从技术上讲,SQL 行的表中没有“RowNumbers”。一些实现(我认为是 Oracle)提供了它们自己的实现之一,但这不是标准的,SQL Server/T-SQL 没有。您可以使用 IDENTITY 列向表中添加一个(有点)。

或者您可以使用 ROW_NUMBER() 函数在查询中添加一个(真实的),但除非您为行指定自己的唯一 ORDER,否则 ROW_NUMBERS 将被不确定地分配。


Jam*_*son 5

row_number()正如 Kaf 在评论中提到的那样,您正在寻找的是函数。

这是一个例子:

WITH MyCte AS 
(
    SELECT   employee_id,
             RowNum = row_number() OVER ( order by employee_id )
    FROM     V_EMPLOYEE 
    ORDER BY Employee_ID
)
SELECT  employee_id
FROM    MyCte
WHERE   RowNum > 0
Run Code Online (Sandbox Code Playgroud)