2013-07-25 25 views
1

我有這個腳本:如何生成的行號與沒有插入創建或插入或CTE

Create table #temp (id int,name varchar(10),city varchar(10),sal int) 
Insert into #temp 
Select 2,'kishor','hyd', 100 
Union all 
Select 3,'kumar','sec', 200 
Union all 
Select 4,'santosh','kp', 300 
Union all 
Select 1,'sudeep','myp', 300 

現在我要生成的行號一樣插入,而不使用創建或插入或數據CTE或更新命令,使用單個select語句。 因此,即使按任何順序排序後,行號列也不應更改其值

+3

表沒有固有的順序。如果您需要特定訂單,則需要確定包含該信息的列,或者如果我們按該列進行排序,則會生成您想要的訂單。如果您目前沒有這樣的專欄,則需要添加專欄。 (當然,之前對一列的引用也可能是一組列) –

回答

0

您應該向表中添加自動增量字段以保存有關插入順序的信息。 然後使用例如ROW_NUMBER()獲得一個rownumber:

select #temp.*, 
     ROW_NUMBER() over (order by <your autoincrement field here>) as RowNumber 
     from #temp