mysql复制一些行并更新一列

时间:2011-03-16 09:51:33

标签: mysql insert-update

我读了一个类似标题的问题,但它与我的问题不符。

我有这张桌子

Robot_Minions
id | type   | id_robot_master
1  | catbot | 15
2  | dogbot | 15
3  | batbot | 15

我想要做的是复制Robot_Master 15的所有Robot_Minons并将它们分配给Robot_Master 16。

所以最终结果应该是

Robot_Minions
id | type   | id_robot_master
1  | catbot | 15
2  | dogbot | 15
3  | batbot | 15
4  | catbot | 16
5  | dogbot | 16
6  | batbot | 16

我能想到的一种方法是首先选择要复制的行,然后遍历它们并运行INSERT blah然后UPDATE blah WHERE id = last insert id。但这是1 + 2x查询。有没有更好的方法,最好是作为一个查询?

1 个答案:

答案 0 :(得分:4)

如果你已经知道你想将minions分配给你的robot_master的id,你可以使用以下查询:

INSERT INTO Robot_minions (type,id_robot_master)
SELECT type, '<new robot_master_id>' 
FROM Robot_minions
WHERE id_robot_master = '<old robot_master>'

这会选择属于<old robot_master>的仆从,然后将最终结果集插入Robot_minions <{1}}