如何将没有主键的表复制到另一个表

时间:2012-05-28 18:06:13

标签: mysql sql

我想将一张桌子复制到另一张桌子。

例如我有表Data(ID, time, serial_number...),我有Temp_data(ID, time, serial_number...)

如何复制没有主键(ID)的所有项目。

我正在使用MYSQL, 我试过了INSERT INTO Data SELECT * FROM Temp_data;

问题在于主键。这两个表都有值,我需要复制除ID以外的所有内容。

3 个答案:

答案 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;

只要源表名称相同,快速,简单且一旦编写就可以工作。