更新操作中的WHERE NOT EXISTS问题

7

每当tbl1中存在多个记录而不在tbl1_temp中时,这个查询会出错。

我该如何修复此问题,以便对于每个在tbl1_temp中不存在的记录,更新tbl1中相应记录的状态。

UPDATE tbl1 SET Status = 'Finished' 
WHERE id = (SELECT id 
FROM tbl1 
WHERE NOT EXISTS (SELECT id FROM tbl1_temp 
WHERE tbl1.id = tbl1_temp.id))
4个回答

13
UPDATE tbl1
SET Status = 'Finished' 
WHERE NOT EXISTS (SELECT id FROM tbl1_temp 
    WHERE tbl1.id = tbl1_temp.id)

3

直接使用 NOT EXISTS

UPDATE tbl1
SET Status = 'Finished' 
WHERE NOT EXISTS (SELECT * FROM tbl1_temp
                WHERE tbl1.id = tbl1_temp.id)

1

等号运算符仅适用于单个值,而不适用于多个值,因此会出现错误。因此,不要使用等式,而应使用IN

... WHERE id IN (SELECT ...)

1
UPDATE tbl1 SET Status = 'Finished' 
WHERE id **IN** (SELECT id 
FROM tbl1 
WHERE NOT EXISTS (SELECT id FROM tbl1_temp 
WHERE tbl1.id = tbl1_temp.id))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接