2016-04-15 141 views
2

我想在插入函數上添加增量值。我已經嘗試了下面的代碼,但沒有工作。我想每次增加COLUMN1 1。 COLUMN1不是關鍵列。SQL插入函數(插入增量值)

@var=0; 
INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
     SELECT @var++,COLUMN6,COLUMN7,COLUMN8 
     FROM TABLE_B; 

任何想法?

回答

2

您可以使用ROW_NUMBER來生成COLUMN1連續值:

INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
SELECT 
    ROW_NUMBER() OVER(ORDER BY(SELECT NULL)) - 1, 
    COLUMN6, 
    COLUMN7, 
    COLUMN8 
FROM TABLE_B; 
+0

但我想要一個獨特的價值!第二次插入時會發生什麼? – user2242558

+0

然後這不起作用。改爲使用'IDENTITY'列。 –

+0

或用'+(SELECT MAX(COLUMN1)FROM TABLE_B')替換'-1''。但是這對於併發查詢可能有問題。 –

1

您可以嘗試將該列設置爲IDENTITY列。如果它是一個現有列,那麼你可以這樣添加:

ALTER TABLE (TABLE_A) ADD NewColumn INT IDENTITY(1,1) 

ALTER TABLE (TABLE_A) DROP COLUMN COLUMN1 

sp_rename 'TABLE_A.NewColumn', 'COLUMN1', 'COLUMN' 

,然後簡單地做喜歡

INSERT INTO TABLE_A (COLUMN2,COLUMN3,COLUMN4) 
SELECT 
    COLUMN6, 
    COLUMN7, 
    COLUMN8 
FROM TABLE_B; 

所以,現在你不必提供COLUMN1而做插件。每當有新行插入到表將自動填充這將是增量由1

+0

在SQL Server 2012中無法識別sp_rename函數 – user2242558

+0

@ user2242558: - 您已將問題標記爲SQL Server 2008.並且sp_rename也適用於SQL Server 2012,https://msdn.microsoft.com/en-in/ library/ms188351(v = sql.110).aspx –

+0

添加2008錯誤!我很抱歉! – user2242558

0

您還可以使用row_number()功能爲了這。將row_number添加到變量。

@var=0; 
INSERT INTO TABLE_A (COLUMN1,COLUMN2,COLUMN3,COLUMN4) 
     SELECT @var + row_number(),COLUMN6,COLUMN7,COLUMN8 
     FROM TABLE_B; 

將您的變量初始化爲您想要的起始數字。道歉,如果它是短我從我的手機發布。

希望這會有所幫助。

+0

請。添加一個關於你的正確答案的例子 –