在插入 MySQL 表时,如何将自增 ID 列的值插入到另一列中?

Nic*_*ick 4 mysql insert auto-increment

我的 MySQL 表中的第一列包含一个自动增量 ID。我想在向表中插入新行时将此值输入到另一列中,即我需要读取 ID 列中的值并将其插入到下一列中。

是否可以做到这一点?如果可以,如何做到?

Ome*_*esh 6

这应该有效:

INSERT INTO table(id, same_id, col1)
(
 SELECT NULL AS id,
        (SELECT AUTO_INCREMENT
         FROM information_schema.TABLES
         WHERE TABLE_SCHEMA=DATABASE() AND
               TABLE_NAME='table') AS same_id,
        "value" AS col1
);
Run Code Online (Sandbox Code Playgroud)

编辑:正如所指出的,Jonathan Swartz它确实受到竞争条件的影响。要修复此问题,请使用LAST_INSERT_ID()获取最后插入的 id 并在新列中更新此值:

INSERT INTO table(id, same_id, col1)
(
 SELECT NULL AS id,
        NULL AS same_id,
        "value" AS col1
);

SELECT LAST_INSERT_ID() INTO @var_id;

UPDATE  table
SET     same_id = @var_id
WHERE   id = @var_id;
Run Code Online (Sandbox Code Playgroud)