MySQL - 插入新ID

标签 mysql

我必须一次插入 3 条记录:

INSERT INTO table (id, name, parent_id) 
VALUES ('1', 'a', 0), (2, 'b', 1), (3, 'c', 1);

存在什么查询,以便我可以将第一条记录的 ID 插入到第二条记录和第三条记录的 parent_id 中?

INSERT INTO table (name, parent_id) 
VALUES ('a', 0), (2, 'b', SELECT table.id WHERE table.id=1), (3, 'c', SELECT table.id WHERE table.id=1);

最佳答案

您不能在单个查询中执行此操作。您可以对最近的 INSERT 语句插入的最后一个值使用 LAST_INSERT_ID() ,但这无助于获取后续行的父 ID 值。在两个单独的语句中执行。

INSERT INTO table (name, parent_id) VALUES 
  ('a', NULL);
INSERT INTO table (name, parent_id) VALUES
  ('b', LAST_INSERT_ID()),
  ('c', LAST_INSERT_ID());

顺便说一下,对根节点的父节点使用 NULL,而不是 0。您没有 id 为 0 的行。

关于MySQL - 插入新ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6419812/

相关文章:

php - 从 mysql 数据库检索数据时 Internet-explorer 出错(但在 firefox 中有效)

MySQL:聚合计数

查询 bash 脚本中的 Mysql 错误处理

mysql连接表,根据时间戳比较仅返回行

即使我的密码为空,mysql 仍提示输入密码

mysql - SQL - 行具有最新日期的分组依据

mysql - HAVING vs (subquery) WHERE的SQL引擎执行计划

mysql - 从所有行中查找并替换 '000L'

php - mysql php 内爆行的链接?

mysql - 学说 2.0 : use SQL timestamp