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)
在子查询中,通过定义您期望的顺序来"创建"行号.现在外部查询能够从该有序集中拉出第五个条目.
从技术上讲,SQL 行的表中没有“RowNumbers”。一些实现(我认为是 Oracle)提供了它们自己的实现之一,但这不是标准的,SQL Server/T-SQL 没有。您可以使用 IDENTITY 列向表中添加一个(有点)。
或者您可以使用 ROW_NUMBER() 函数在查询中添加一个(真实的),但除非您为行指定自己的唯一 ORDER,否则 ROW_NUMBERS 将被不确定地分配。
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)