是否有一种简单的方法可以在不使用游标或外部脚本/代码的情况下使用严格的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。基于上面的模式,当我复制类别表中的记录时,我将最终得到所有新的category_id值。当我创建parent_table记录的副本时,我需要一种方法以某种方式使用刚刚创建的新category_id值更新旧的category_id值。然后,在复制child_record1和child_record2记录时,我需要使用新的parent_record_id值。
我觉得必须有一种更简单的方法来实现这一点,而不是用PHP或其他语言将其全部编写到外部。有吗?
答案 0 :(得分: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);