[英]How to insert Auto-Increment using SELECT INTO Statement? SQL SERVER
這是我的表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
使用ROW_NUMBER
從1
開始添加序號。
SELECT *,
Auto = ROW_NUMBER() OVER(ORDER BY(SELECT NULL))
INTO table2
FROM table1
您可以使用標識字段,這就是它們的用途。 身份(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
當將一個表分成具有確切行數的幾個較小的表時,接受的答案具有額外的便利性。 如有必要,可以去除用於自動增量的色譜柱。
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.