我必须一次插入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);
答案 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的行。