2016-06-15 128 views
2

這是我的表1:如何使用SELECT INTO語句插入自動遞增? SQL SERVER

Name  Description 
john  student  
dom   teacher 

我需要使用SELECT * INTO將它轉移到另一個表(table2),但我有一個名爲Auto新列這是自動增加想要它。

這將是這樣的:

Name  Description  Auto 
John  Student   1 
Dom   Teacher   2 

目前代碼:SELECT * INTO table2 FROM table1

回答

5

使用ROW_NUMBER添加從1開始順序編號。

SELECT *, 
    Auto = ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) 
INTO table2 
FROM table1 
1

您可以爲此使用標識字段,這就是他們的用途。標識(1,1)的邏輯意味着它將從數字1開始,每次增加1。

樣本數據;

CREATE TABLE #OriginalData (Name varchar(4), Description varchar(7)) 
INSERT INTO #OriginalData (Name, Description) 
VALUES 
('John','student') 
,('Dom','teacher') 

創建一個新表並將數據插入它;

CREATE TABLE #NewTable (Name varchar(4), Description varchar(7), Auto int identity(1,1)) 
INSERT INTO #NewTable (Name, Description) 
SELECT 
Name 
,Description 
FROM #OriginalData 

給出結果爲;

​​

如果您運行插入多次,您的結果將如下所示;

Name Description Auto 
John student  1 
Dom  teacher  2 
John student  3 
Dom  teacher  4 
John student  5 
Dom  teacher  6