我必须一次插入 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/