我有两个表,问题和答案。 答案包含一个键* question_id *
当我创建问题时,我将一条记录插入 questions 表,并将几条记录插入 answers 表。是否可以使用LAST_INSERT_ID()或类似方法在一个查询中执行所有这些操作?
即。
之类的东西INSERT INTO questions VALUES(NULL, 'My question');
INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 1');
INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 2');
INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 3');
显然,由于LAST_INSERT_ID()在每个语句之后发生更改,因此此查询无效。无论如何要做这项工作还是我必须将其分解为两个问题?
答案 0 :(得分:5)
您可以使用以下批量插入内容:
INSERT INTO answers VALUES
(NULL, LAST_INSERT_ID(), 'Answer 1') ,
(NULL, LAST_INSERT_ID(), 'Answer 2') ,
(NULL, LAST_INSERT_ID(), 'Answer 3');
答案 1 :(得分:1)
尝试将de值存储到变量
中INSERT INTO questions VALUES(NULL, 'My question');
SET @id = (SELECT LAST_INSERT_ID());
INSERT INTO answers VALUES(NULL, @id, 'Answer 1');
INSERT INTO answers VALUES(NULL, @id, 'Answer 2');
INSERT INTO answers VALUES(NULL, @id, 'Answer 3');
我认为还有另一种方法可以做到,但也许会给你一个想法。