Mysql 如何在单个查询一对多关系中使用LAST_INSERT_ID?

Mysql 如何在单个查询一对多关系中使用LAST_INSERT_ID?,mysql,relational-database,Mysql,Relational Database,我有两张桌子,问题和答案。 答案包含一个关键*问题id* 当我创建一个问题时,我会在问题表中插入一条记录,在答案表中插入几条记录。是否可以使用LAST_INSERT_ID()或类似工具在一个查询中完成所有这些操作 例如 INSERT INTO questions VALUES(NULL, 'My question'); INSERT INTO answers VALUES(NULL, LAST_INSERT_ID(), 'Answer 1'); INSERT INTO answers VALU

我有两张桌子,问题和答案。 答案包含一个关键*问题id*

当我创建一个问题时,我会在问题表中插入一条记录,在答案表中插入几条记录。是否可以使用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');

显然,这个查询不起作用,因为上一个\u INSERT\u ID()在每个语句之后都会更改。还是我必须将其分成两个查询?

尝试将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');

我认为还有另一种方法可以做到这一点,但也许它会给你一个想法。

你可以像这样使用批量插入:

INSERT INTO answers VALUES
          (NULL, LAST_INSERT_ID(), 'Answer 1') , 
          (NULL, LAST_INSERT_ID(), 'Answer 2') , 
          (NULL, LAST_INSERT_ID(), 'Answer 3');

虽然这可能有效,但萨宾·安沃显然是我想要的。是的。。。这是最好的选择。我不知道我们可以使用带有最后一个插入ID的批量插入。DI不知道这一点。我稍后会试试…:D