2012-05-09 3 views
5

カーソルまたは外部スクリプト/コードを使用せずに、厳密にSQLを使用して親レコードとすべての関連する子レコードを簡単にコピーできますか?ここに私が持っているものの例があります:データベース内のMySQLの親レコードおよび関連するすべての子レコードを新しいIDにコピーする

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> 

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

私は、PHPや他の言語で外部的にスクリプトを書くのではなく、これを達成するための簡単な方法が必要であると感じています。ある?

答えて

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); 
+0

おかげでブライアンを行うことができます。私はその構文を認識しています。それは私が他の関連するレコードをコピーし、すべての新しいIDを追跡/更新している問題を解決しません。 – ShawnCBerg

関連する問題