在SQL中将rowID设置为标识(应该是升序编号)

时间:2014-07-31 11:48:46

标签: sql sql-server identity

我有以下sql脚本

DECLARE @tmpTable TABLE (rowID int IDENTITY, 
                         woID varchar(100), srID varchar(100), 
                         woWorkOrderNumber varchar(100), 
                         woSequenceCount varchar(100), 
                         WorkOrderNumber varchar(100)
                        )

INSERT INTO @tmpTable (woID, srID, woWorkOrderNumber, woSequenceCount, WorkOrderNumber)
   SELECT 
      woID, srID, woWorkOrderNumber, woSequenceCount, 
      SUBSTRING(woWorkOrderNumber, 11, 20 ) AS WorkOrderNumber 
   FROM 
      WorkOrder 
   WHERE
      codeSICurrentStatusCode NOT IN (3, 4) 
      AND SUBSTRING(woWorkOrderNumber, 11, 20) = ''

SELECT * FROM @tmpTable

但是我在rowID列上获得了这些结果:

enter image description here

如您所见,rowID似乎是我选择的表格中的行号。我试图在这个临时表上实现的是rowID从1开始然后是2然后是3开始等等。我的代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

您需要在ORDER BY语句INSERT子句中指定SELECT,以便控制身份值分配的顺序。您也可以使用ROW_NUMBER()代替IDENTITY,以确保没有差距,并提供对值的完全控制。