mysql - 如何将删除语句与子查询一起使用 - 错误 1093?

标签 mysql

此查询准确返回我需要删除的 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/

相关文章:

php - MySQL 返回按组分隔的联合选择结果

php - 删除行后重置数字序列

php - MySQL 通过将 blob 数据分成几部分来检索它

python - 尝试过滤具有特定值的字典列表时出错我收到错误

php - 从数据库检索图像,显示并将其附加到链接

MySQL 从 v5.1 升级到 v8.* 失败——如何恢复数据

mysql - SQL SELECT 语句 MAX 日期和表连接

mysql - mysql中的一种简单查询但无法解决

MySQL正则表达式: How to match digits in the string with\d?

mysql - SET FOREIGN_KEY_CHECKS = 0 在 Sequelize 迁移中不起作用