删除所有记录,除非1个或多个子记录符合条件

时间:2013-06-29 20:49:34

标签: sql sql-delete

如果我有一张带有1对多联合表“乘客”的“汽车”表,我如何删除所有没有一名或多名名为“吉姆”的乘客的车?

如果它更简单,它们是静态数量的其他乘客名称。我们只说“Peggy”,“Maggy”和“Sue”。听起来不是那么难,但我无法理解我的生活。提前谢谢!

1 个答案:

答案 0 :(得分:2)

单程,NOT EXISTS

DELETE c FROM Cars c
WHERE NOT EXISTS
(
    SELECT 1 FROM Passengers p
    WHERE p.Name = 'Jim'
      AND p.CarID = c.ID
)

Demo

假设CarID是外键,ID是汽车的主键。