问:写一个查询,列出每个没有蓝色房子的人的名字。
这是我的代码:
SELECT persons.name
FROM persons
JOIN houses ON (persons.id=houses.owner_id)
WHERE houses.color<>'Blue';
两个表如下所示:
我的结果:
预期结果:
我怎样才能不让“Arian”出现在我的结果中?
“阿里安”有两栋房子,一栋红一栋蓝。因为他拥有那栋红色的房子,所以他对我的成绩很感兴趣。我正努力想办法把他排除在外。
最佳答案
您可以使用not exists
:
SELECT p.name
FROM persons p
WHERE NOT EXISTS (SELECT 1
FROM houses h
WHERE h.owner_id = p.id AND
h.color = 'Blue'
)