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

在查询结果中包括行号(SQL Server),sql,sql-server,Sql,Sql Server,我认为sql server中的每一行都有一个唯一的编号。如何将其包含在我的SQL查询结果中?如果在运行查询时引用Management Studio提供的行号,则无法获取该行号,因为它实际上并不存在。ManagementStudio会在运行中生成这些数据。但是,如果使用的是SQL Server 2005或更高版本,则可以使用排名函数重新创建序列号。注意:除非包含ORDERBY语句,否则永远不要假设数据库将按指定顺序返回行。因此,您的查询可能如下所示: Select .... , Row_N

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

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

Select ....
    , Row_Number() Over ( Order By T.SomeColumn ) As Num
From Table As T
Order By T.SomeColumn

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

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

但有一种称为ROW_NUMBER函数的函数可以用作特定结果中行的唯一标识

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

我想你应该用这个


DCount(‘Column_Name’、‘Table_Name’、‘Column_Name’——通常表中的第一个字段——可能命名为‘id’或类似的东西——是主键,它通常是一个整数,每增加一行就增加1……所以它就像一个行号。但是我们必须知道表是如何组织的,以说明是否有id字段,如果有,如何创建检索它。很好:)。我在主键列上做了行号。这样,我从1中获得了一个序列号,没有任何间隔(即使删除了行)。我们如何在MySQL@AshokkumarGanesan-同样的方法:是的,我试着在某个对我不起作用的地方买了它,我选择了Offset
DCount()
不是SQL Server中的函数。