5

カーソルや外部スクリプト/コードを使用せずに、厳密に SQL を使用して親レコードと関連するすべての子レコードをコピーする簡単な方法はありますか? これが私が持っているものの例です:

categories
==
category_id
category_name

parent_table
==
parent_record_id
category_id
... <other fields>

child_table1
==
child_table1_id
parent_record_id
... <other fields>

child_table2
==
child_table2_id
parent_record_id
... <other fields>

基本的に、このすべてのデータの正確な複製を作成する必要があります。ID はすべて auto_increment であるため、変更される唯一のフィールドは ID です。上記のスキーマに基づいて、category テーブルのレコードをコピーすると、すべての新しい category_id 値が作成されます。parent_table レコードの複製を作成するとき、作成したばかりの新しい category_id 値で古い category_id 値を更新する方法が必要になります。次に、child_record1 レコードと child_record2 レコードをコピーするときに、新しいparent_record_id 値を使用する必要があります。

PHP や別の言語で外部からスクリプトを作成するよりも、これを実現するための簡単な方法が必要だと思います。ある?

4

1 に答える 1

1

この記事をチェックしてください。http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

基本的に次のことができます

INSERT INTO table (id, column1, column2) (SELECT NULL, column1, column2 FROM table WHERE whatever_id = 123);
于 2012-05-09T04:24:04.977 に答える