SQL 带有 NOT IN 子句的 DELETE 查询不起作用

SQL DELETE query with NOT IN clause not working

我有一个简单的删除查询我有两个表 table1 和 table2

查询是

DELETE FROM table1
WHERE  end_time NOT IN (SELECT end_time
                        FROM   table2
                        WHERE  comp_name = 'component')
       AND id = 'id' 

查询没有删除记录我在这里遗漏了什么我试图用第二个更改第一个条件但它删除而不检查条件 2

这里有哪些选择?

我想知道这里的实际问题是什么,查询运行没有错误,但它不正确。

可能 alias 应该可以解决您的问题,因为这两个表具有相同的列名 end_timeOuter query 列可以在可能是问题的 subquery 中引用。

DELETE FROM table1 
WHERE  end_time NOT IN (SELECT b.end_time
                        FROM   table2 B
                        WHERE  b.comp_name = 'component')
       AND id = 'id'

更新: 尝试删除,因为您的子查询中可能有 null 个值,而 NOT IN 将失败。检查这个 post link

DELETE a
FROM   table1 a
WHERE  NOT EXISTS (SELECT 1
                   FROM   table2 B
                   WHERE  b.comp_name = 'component'
                          AND a.end_time = b.end_time)
       AND id = 'id'