我想将一张桌子复制到另一张桌子。
例如我有表Data(ID, time, serial_number...)
,我有Temp_data(ID, time, serial_number...)
如何复制没有主键(ID
)的所有项目。
我正在使用MYSQL,
我试过了INSERT INTO Data SELECT * FROM Temp_data;
问题在于主键。这两个表都有值,我需要复制除ID以外的所有内容。
答案 0 :(得分:7)
而不是SELECT *
,拼出您想要的列:
INSERT INTO Data (time, serial_number...)
SELECT (time, serial_number...) FROM Temp_data;
答案 1 :(得分:3)
您必须在查询中定义列名称,否则它将插入所有列
INSERT INTO tbl2 (column1, column2)
SELECT tbl1.col1, tbl1.col2 FROM tbl1
答案 2 :(得分:1)
这是一个非常烦人的问题,因为每次您需要更新列时,您还需要更新复制的代码。这是我用来解决问题和将来验证代码的解决方案:
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;
只要源表名称相同,快速,简单且一旦编写就可以工作。