我有两个表,它们的结构相同,但是内容不同。每个表的第一列是一个自动增量ID。
我想做的是将一个表中的一些行插入另一个表中。但是,id列应在目标表中自动设置,而不是从源表中复制。
到目前为止,我正在使用类似:
INSERT INTO table_1
SELECT
id,
column_2,
column_3,
column_4
FROM table_2
WHERE column_4 = 'a value'
我不能仅从表2中选择ID,如上面所示,因为这会在表1中创建重复的ID。
我尝试用“
(SELECT MAX(id)+1 FROM table_1) AS id
”替换“ id”。那会获得正确的ID,但不会为要插入的每一行增加ID。我已经尝试过
(SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA_TABLES WHERE SCHEMA_TABLE = 'table_1') AS id
,但是只是说“无法解析列AUTO_INCREMENT”而失败我已经尝试过
LAST_INSERT_ID() as id
。这实际上在我第一次运行该语句时有效,但是进一步尝试失败,并显示消息“键PRIMARY的重复条目875”最后,我尝试将列完全省略,但是随后我收到一条错误消息,指出列数不匹配。
谁能对此有所启示?我应该指出,我需要纯MySQL。我不在PHP的上下文中。
谢谢
最佳答案
您必须指定要插入的列,然后可以将其省略:
INSERT INTO table_1 (column_2, column_3, column_4)
SELECT column_2, column_3, column_4
FROM table_2
WHERE column_4 = 'a value'