2011-05-22 45 views
2

我有2個表,如下面的結構。除表名外,兩者都是相同的。SQL - 將行從一個表複製到另一個表,並同時更新目標表中的列

tbl_item_color_exp 
>>item_color_ID 
>>color_ID 
>>item_ID 

tbl_item_color_live 
>>item_color_ID 
>>color_ID 
>>item_ID 

我想幾行從tbl_item_color_live表格複製到tbl_item_color_exp表。我可以完成複製通過下面的下面的SQL確切的行和列:

INSERT INTO tbl_item_color_exp 
SELECT * FROM tbl_item_color_live WHERE item_ID = $oldID 

但我不希望創建複製item_color_ID主鍵,我想更新所有行復制的ITEM_ID列到一個新的變量,$newID 。總體思路是根據$oldID複製所有行,並使用&newID更新目標表,但使用自動遞增的主鍵item_color_ID維護color_ID列。

我可以使用幾個SQL查詢來完成它,但我想知道是否可以通過一條SQL線更有效地執行所有操作?我希望我的問題能被大家理解,謝謝。

+0

什麼RDBMS好嗎? – gbn 2011-05-22 08:56:54

+0

@gbn:我正在使用MYSQL。 – maomaopop 2011-05-22 09:00:07

回答

4

我不是100%肯定我明白你想要什麼,但它聽起來就像你其實只是想複製的color_id S,你想將它們都與新的item_id,並且要對自動編號發生。

聽起來像:

INSERT INTO tbl_item_color_exp (color_id,item_id) 
SELECT color_id,$newID FROM tbl_item_color_live WHERE item_ID = $oldID 
+0

18.5k - 你在開玩笑嗎?大聲笑。 – tofutim 2011-05-22 08:59:11

+0

行動中,你是對的,表已經轉換角色。我的錯。編輯。 – maomaopop 2011-05-22 09:01:18

+0

@mmk - 更新爲匹配 – 2011-05-22 09:02:21

2
INSERT INTO tbl_item_color_live (color_ID, item_ID) 
SELECT color_ID, $newID FROM tbl_item_color_exp WHERE item_ID = $oldID 
相關問題