MYSQL 使用 select 插入时如何获得下一个自动增量
MYSQL how to get next auto increment when inserting with select
我有两个table结构相同,但内容不同。每个table的第一列是一个自动递增的id。
我想做的是将一个 table 中的 一些 行插入到另一个中。但是,id 列应该在目标 table 中自动设置,而不是从源中复制。
到目前为止,我使用的是:
INSERT INTO table_1
SELECT
id,
column_2,
column_3,
column_4
FROM table_2
WHERE column_4 = 'a value'
我不能只 select 来自 table 2 的 ID,因为这会在 table 1 中创建重复的 ID。
我尝试用 (SELECT MAX(id)+1 FROM table_1) AS id
替换 'id'。这得到了正确的 id,但不会为要插入的每一行增加它。
我已经试过 (SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA_TABLES WHERE SCHEMA_TABLE = 'table_1') AS id
但就是失败 'Unable to resolve column AUTO_INCREMENT'
我试过了LAST_INSERT_ID() as id
。这实际上在我第一次 运行 语句时起作用,但进一步尝试失败并显示消息 'Duplicate entry 875 for key PRIMARY'
最后,我试图完全忽略该列,但随后收到一条错误消息,指出列数不匹配。
任何人都可以阐明这一点吗?我应该指出,我需要纯 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'
您可以在INSERT
语句中指定除ID
之外的所有列,例如:
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'
由于ID
是在table2中自动生成的,所以会自动取值。
我有两个table结构相同,但内容不同。每个table的第一列是一个自动递增的id。
我想做的是将一个 table 中的 一些 行插入到另一个中。但是,id 列应该在目标 table 中自动设置,而不是从源中复制。
到目前为止,我使用的是:
INSERT INTO table_1
SELECT
id,
column_2,
column_3,
column_4
FROM table_2
WHERE column_4 = 'a value'
我不能只 select 来自 table 2 的 ID,因为这会在 table 1 中创建重复的 ID。
我尝试用 (SELECT MAX(id)+1 FROM table_1) AS id
替换 'id'。这得到了正确的 id,但不会为要插入的每一行增加它。
我已经试过 (SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA_TABLES WHERE SCHEMA_TABLE = 'table_1') AS id
但就是失败 'Unable to resolve column AUTO_INCREMENT'
我试过了LAST_INSERT_ID() as id
。这实际上在我第一次 运行 语句时起作用,但进一步尝试失败并显示消息 'Duplicate entry 875 for key PRIMARY'
最后,我试图完全忽略该列,但随后收到一条错误消息,指出列数不匹配。
任何人都可以阐明这一点吗?我应该指出,我需要纯 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'
您可以在INSERT
语句中指定除ID
之外的所有列,例如:
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'
由于ID
是在table2中自动生成的,所以会自动取值。