2011-05-22 42 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 
相关问题