MySQL - 插入新的id

时间:2011-06-21 02:46:33

标签: 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);

1 个答案:

答案 0 :(得分:4)

您无法在单个查询中执行此操作。您可以将LAST_INSERT_ID()用于最新INSERT语句插入的最后一个值,但这无助于获取后续行的父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的行。