我有一个简单的删除查询我有两个表table1和table2
查询
DELETE FROM table1
WHERE end_time NOT IN (SELECT end_time
FROM table2
WHERE comp_name = 'component')
AND id = 'id'
查询不会删除记录我在这里缺少的东西我试图用第二个条件更改第一个条件但是它会删除而不检查条件2
这里有哪些替代方案?
我想知道这里的实际问题是什么,查询运行没有错误,但它不正确。
答案 0 :(得分:3)
可能alias
应该解决您的问题,因为这两个表都有相同的列名end_time
。可以在可能存在问题的Outer 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
将失败。查看此帖子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'