MySQL-插入选择(插入…)-嵌套插入';s

MySQL-插入选择(插入…)-嵌套插入';s,mysql,sql,subquery,Mysql,Sql,Subquery,我试图同时在不同的表上插入两行。 子查询INSERT INTO的自动增量或id(如果已经存在)的值应写入主查询中 目前我有这个(简化为3个值),但它不起作用。我想知道是否有更好的方法 INSERT IGNORE INTO access(`entryid`, `logid`, `urlid`) SELECT '0', '1', (INSERT IGNORE INTO urls(`url`) VALUES('example.com')); 显然,我可以为此目的进行多个单独的查询,但我认为

我试图同时在不同的表上插入两行。
子查询INSERT INTO的自动增量或
id
(如果已经存在)的值应写入主查询中

目前我有这个(简化为3个值),但它不起作用。我想知道是否有更好的方法

INSERT IGNORE INTO access(`entryid`, `logid`, `urlid`)  
   SELECT '0', '1', (INSERT IGNORE INTO urls(`url`) VALUES('example.com'));

显然,我可以为此目的进行多个单独的查询,但我认为将其插入一个查询中可以提高代码的可靠性(因为它永远不会在查询中途“失败”)。我只是在寻找一个嵌套的INSERT到解决方案中。

为什么不将这些查询移动到一个嵌套的解决方案中呢?如果这样做,如果这些查询中的任何一个失败,整个块都将回滚。如果使用
LAST\u INSERT\u ID()

基于您的查询的示例:

START TRANSACTION;
INSERT IGNORE INTO urls(`url`) VALUES('example.com');
INSERT IGNORE INTO access(`entryid`, `logid`, `urlid`) VALUES (0, 1, LAST_INSERT_ID());
COMMIT;

OP表示,他希望确保查询不会中途“失败”,因此交易不会失败。