【发布时间】:2018-03-10 11:51:56
【问题描述】:
有两个表(Person 和 Car)通过子表中的外键相互关联。 Person 表可以有重复的人名。我需要从 Person 中选择没有任何汽车与之关联的所有唯一名称。换句话说,我必须检查哪些人没有任何汽车并选择它们。
【问题讨论】:
-
提示:
NOT EXISTS。或NOT IN。或LEFT JOIN和WHERE。
有两个表(Person 和 Car)通过子表中的外键相互关联。 Person 表可以有重复的人名。我需要从 Person 中选择没有任何汽车与之关联的所有唯一名称。换句话说,我必须检查哪些人没有任何汽车并选择它们。
【问题讨论】:
NOT EXISTS。或NOT IN。或LEFT JOIN 和WHERE。
您可以使用not exists 运算符:
SELECT DISTINCT name
FROM person p
WHERE NOT EXISTS (SELECT *
FROM car c
WHERE p.id = c.owner_id)
【讨论】:
这是许多可能的查询之一。
SELECT p.name
FROM person p LEFT OUTER JOIN car c
ON p.id = c.id
WHERE c.id is NULL;
【讨论】: