这是我的表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
答案 0 :(得分:5)
使用ROW_NUMBER
从1
开始添加序号。
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;