在查询结果中包含行号(SQL Server)

TCM*_*TCM 10 sql sql-server

我认为sql server中的每一行都有一个唯一的编号.如何在SQL查询结果中包含它?

Tho*_*mas 31

如果您在运行查询时引用Management Studio提供的行号,则无法获取该行,因为它实际上并不存在.Management Studio即时生成.但是,如果您使用的是SQL Server 2005或更高版本,则可以使用ROW_NUMBER排名功能重新创建序列号.请注意,除非包含Order By语句,否则不应假设数据库将按指定顺序返回行.所以您的查询可能如下所示:

Select ....
    , Row_Number() Over ( Order By T.SomeColumn ) As Num
From Table As T
Order By T.SomeColumn
Run Code Online (Sandbox Code Playgroud)

Over子句中的Order By用于确定创建序列号的顺序.查询结尾处的Order By子句用于确定输出中行的顺序(即序列号的顺序和行的顺序可以不同).