我想将一张表复制到另一张表。
例如我有桌子Data(ID, time, serial_number...)
,我有Temp_data(ID, time, serial_number...)
如何复制没有主键 ( ID
) 的所有项目。
我正在使用MYSQL,我已经尝试过INSERT INTO Data SELECT * FROM Temp_data;
问题出在主键上。这两个表都已经有了值,我需要复制除 ID 之外的所有内容。
而不是SELECT *
,拼出您想要的列:
INSERT INTO Data (time, serial_number...)
SELECT (time, serial_number...) FROM Temp_data;
您必须在查询中定义列名,否则它将插入所有列
INSERT INTO tbl2 (column1, column2)
SELECT tbl1.col1, tbl1.col2 FROM tbl1
这是一个非常烦人的问题,因为每次您需要更新列时,您还需要更新复制它们的代码。这是我用来解决问题并使代码面向未来的解决方案:
DROP TABLE IF EXISTS TempData;
CREATE TEMPORARY TABLE TempData (LIKE Data);
INSERT INTO TempData SELECT * FROM Data;
ALTER TABLE TempData CHANGE COLUMN `id` `id` INT(11) NULL, DROP PRIMARY KEY;
UPDATE TempData SET id = 0;
INSERT INTO Data SELECT * FROM TempData;
DROP TABLE IF EXISTS TempData;
快速、简单且一次编写,只要源表名相同,每次都有效。