SQL - 将行从一个表复制到另一个表并同时更新目标表中的列

时间:2011-05-22 08:53:27

标签: mysql sql copy

我有2个表,如下面的结构。除了表名之外,两者都是相同的。

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更新目标表,但使用自动递增的主键color_ID维护item_color_ID列。

我可以使用几个SQL查询来完成它,但我想知道我是否可以通过一个SQL行以更有效的方式完成所有操作?我希望所有人都可以理解我的问题,谢谢。

2 个答案:

答案 0 :(得分:4)

我不是百分百肯定我明白你想要什么,但听起来你实际上只想复制color_id,你想用新的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

答案 1 :(得分:2)

INSERT INTO tbl_item_color_live (color_ID, item_ID)
SELECT color_ID, $newID FROM tbl_item_color_exp WHERE item_ID = $oldID