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

时间:2010-07-27 14:51:47

标签: sql sql-server

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

3 个答案:

答案 0 :(得分:29)

如果您在运行查询时引用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

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

答案 1 :(得分:3)

结果中的唯一性始终是您的主键。

但是有一些名为ROW_NUMBER的函数可以用作特定结果中行的唯一标识。

SELECT zip,city,state,latitude,longitude,timezone,dst,
          ROW_NUMBER() OVER (ORDER BY zip) AS num
          FROM dbo.zipcode;

答案 2 :(得分:-1)

我认为你应该使用这个....

DCount('Column_Name','Table_Name','Column_Name <= ' & [Column_Name]) as SR