如何使用SELECT INTO语句插入自动增量? SQL SERVER

时间:2016-06-15 07:41:18

标签: sql sql-server sql-server-2008

这是我的表1:

Name        Description  
john        student       
dom         teacher

我需要使用SELECT * INTO将其转移到另一个表格(table2),但我想要一个名为Auto的新列自动递增

这将是这样的:

Name       Description        Auto
John        Student            1
Dom         Teacher            2

当前代码:SELECT * INTO table2 FROM table1

3 个答案:

答案 0 :(得分:5)

使用ROW_NUMBER1开始添加序号。

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

答案 1 :(得分: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

如果再次运行插入次数,结果将如下所示;

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

答案 2 :(得分:0)

将一个表拆分为几个具有精确行数的较小表时,接受的答案还有其他便利。如有必要,可以删除用于自动增量的列。

SELECT *,
    ID = ROW_NUMBER() OVER(ORDER BY ( SELECT NULL ))
INTO #Table2
FROM Table1

DECLARE @start INT, @end INT;
SET @start = 1;
SET @end = 5000000;

SELECT *
INTO Table3
FROM #Table2
WHERE ID BETWEEN @start AND @end;

ALTER TABLE Table3 DROP COLUMN ID;