Mysql 使用子查询的结果更新子查询中也引用的表
我正试图修复一个不完整的数据库,在那里我无法控制模式,我需要找到丢失的条目并插入它们 这是我得出的语法:Mysql 使用子查询的结果更新子查询中也引用的表,mysql,sql,sql-insert,mysql-error-1093,Mysql,Sql,Sql Insert,Mysql Error 1093,我正试图修复一个不完整的数据库,在那里我无法控制模式,我需要找到丢失的条目并插入它们 这是我得出的语法: INSERT INTO downloads (product_id, filename) VALUES ( products_id = ( SELECT id FROM products WHERE id NOT IN ( SELECT product_id FROM downloads
INSERT INTO
downloads (product_id, filename)
VALUES
(
products_id = ( SELECT id
FROM products
WHERE id NOT IN
( SELECT product_id
FROM downloads
)
),
filename = 'default.zip'
)
子查询单独工作正常,但上面抛出了一个错误
#1093 - You can't specify target table 'download' for update in FROM clause
我已经回顾了许多与此错误()相关的StackOverflow问题,我认为有一种方法可以嵌套子查询,使其为“”,但我还无法调整它
如果我的方法效率不高,那没关系,我很想看到一个接近我语法的解决方案,但任何解决方案都会有帮助。要做的事情
- 使用
INSERT…插入SELECT语句
- 使用
而不是左连接
不在
- 不要忘记在以下列中添加索引:
和products.ID
,以提高性能downloads.product\u ID
INSERT INTO downloads (product_id, filename)
SELECT a.id AS product_id, 'default.zip' AS filename
FROM products a
LEFT JOIN downloads b
ON a.ID = b.product_id
WHERE b.product_id IS NULL
工作得很有魅力。我对
为NULL的含义缺乏理解,这导致我使用嵌套子查询解决方案。