簡體   English   中英

如何使用SELECT INTO語句插入自動增量? SQL SERVER

[英]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_NUMBER1開始添加序號。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM