2

似たようなタイトルの質問を読みましたが、問題と一致しません。

私はこのテーブルを持っています

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

私がやりたいのは、Robot_Master 15のすべてのRobot_Minonsをコピーして、Robot_Master16に割り当てることです。

したがって、最終結果は次のようになります。

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

私が考えることができる1つの方法は、最初にコピーする行を選択し、次にそれらをループしてINSERT blahを実行し、次にUPDATE blah WHERE id = lastinsertidを実行することです。しかし、これは1+2xクエリです。理想的には1つのクエリとして、より良い方法はありますか?

4

1 に答える 1

4

ミニオンを割り当てたい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れます。<new robot_master_id>

于 2011-03-16T09:58:15.943 に答える