此查询准确返回我需要删除的 Office 元组。
SELECT id, reference FROM office o
WHERE o.id NOT IN
(SELECT c.office_id FROM Contract c WHERE office_id IS NOT NULL)
AND o.reference IN
(SELECT o.reference FROM Contract c JOIN office o ON c.office_id = o.id WHERE office_id IS NOT NULL);
但是当我编写查询时
DELETE FROM office
WHERE id NOT IN
(SELECT c.office_id FROM Contract c WHERE office_id IS NOT NULL)
AND reference IN
(SELECT o.reference FROM Contract c JOIN office o ON c.office_id = o.id WHERE office_id IS NOT NULL);
我遇到以下错误:#1093 - 您无法在 FROM 子句中指定要更新的目标表“office”
但是我真的不知道如何解决这个问题..
任何帮助将不胜感激!
最佳答案
尝试
DELETE FROM office
WHERE id NOT IN
(SELECT c.office_id FROM Contract c
WHERE office_id IS NOT NULL)
AND reference IN
(select * from (SELECT o.reference FROM Contract c
JOIN office o ON c.office_id = o.id
WHERE office_id IS NOT NULL) x);
因为您无法从您选择的表中删除。但是使用
select * from (select col from your_table) x
应该可以解决问题
关于mysql - 如何将删除语句与子查询一起使用 - 错误 1093?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12764893/