2010-07-27 78 views
6

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

+0

据我所知,疗法是没有唯一的编号,只是你声明的主键。 – Hinek 2010-07-27 14:55:28

+0

通常情况下,表中的第一个字段 - 可能命名为“id”或类似的东西 - 是主键,通常是一个整数,每增加一行就会增加1 ...因此它就像一个行号。但是我们必须知道表是如何组织的,以说明是否存在id字段,如果存在,如何检索它。 – ewall 2010-07-27 14:58:58

回答

22

如果你指的是,当你运行一个查询通过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 

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

+0

好:)。我在我的主键列上做了row_number。这样我从1开始顺序编号没有任何差距(即使行被删除)。 – TCM 2010-07-27 15:14:23

2

在结果的唯一性永远是你的主键。

但有一个名为ROW_NUMBER函数的东西,可以作为特定结果行的唯一标识。

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

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

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

+0

'DCount()'不是SQL Server中的函数。 – Smandoli 2016-05-18 16:41:18