2015-02-08 86 views
1

我在table_3中有一些記錄,我想將該記錄插入table_2,但第一列(Id)的值將是(NUMBER + 1)table_1。我的代碼是從其他表中插入數據在sql server中

INSERT INTO TABLE_2(Id,NAME) 
SELECT (SELECT MAX(NUMBER) FROM TABLE_1)+1 AS Id,name 
FROM TABLE_3 

TABLE_1計數爲200和TABLE_3計數爲10.我希望新插入的ID是一樣

(201,202,203,204,205,206,207,208,209,210)

但是從查詢我越來越像...

(201,201,201,201,201,201,201,201,201,201)

回答

2

,你可以這樣做只是使用ROW_NUMBER()group by

INSERT INTO TABLE_2(Id,NAME) 
SELECT MAX(NUMBER) + ROW_NUMBER() OVER (ORDER BY name),name 
FROM TABLE_3 
group by name 
only one select
+0

像一個魅力工作。謝謝Farhang。 – 2015-02-08 14:48:44

+1

你非常歡迎Naila。 – jfun 2015-02-08 14:49:39

1

在您的查詢(SELECT MAX(NUMBER) FROM TABLE_1)+1始終是相同的,因爲MAX(NUMBER)只是200

如果你想以1爲插入每個新記錄遞增,開始(SELECT MAX(NUMBER) FROM TABLE_1)+1,試試這個:

INSERT INTO TABLE_2 (Id, NAME) 
SELECT Id + rn, name 
FROM (
    SELECT (SELECT MAX(NUMBER) FROM TABLE_1) AS Id, name, 
      ROW_NUMBER() OVER (ORDER BY name) AS rn 
    FROM TABLE_3) t 
+0

ooopss ..還有沒有其他辦法可以做到這一點?我有大約30列。我必須一次又一次地寫下它們。 – 2015-02-08 14:34:57

+0

@NailaAkbar您可以通過在表格模式中添加一列以及樣本數據來編輯OP嗎? – 2015-02-08 14:36:44

+0

OP是什麼意思? – 2015-02-08 14:39:04

相關問題