每当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))
每当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))
UPDATE tbl1
SET Status = 'Finished'
WHERE NOT EXISTS (SELECT id FROM tbl1_temp
WHERE tbl1.id = tbl1_temp.id)
直接使用 NOT EXISTS
UPDATE tbl1
SET Status = 'Finished'
WHERE NOT EXISTS (SELECT * FROM tbl1_temp
WHERE tbl1.id = tbl1_temp.id)
等号运算符仅适用于单个值,而不适用于多个值,因此会出现错误。因此,不要使用等式,而应使用IN
:
... WHERE id IN (SELECT ...)
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))