假设我们有
Owners
id
Dogs
id
owner_id
trained (boolean)
我希望所有不拥有任何受过训练的狗的所有者,包括那些没有狗的人。< / p>
因此,如果一个拥有者有一只受过训练的狗,而一只狗没有受过训练,那么该主人就不应该出现,因为已经有一只受过训练的狗。
我试过这样的事情:
SELECT * FROM owners o
LEFT JOIN dogs d on d.owner_id = o.id
WHERE
d.trained = false OR d.trained IS NULL.
但是这个查询会返回记录,包括训练有狗的所有者,只要他们有没有训练过的狗。
我不想只得到:
答案 0 :(得分:1)
not exists
运算符就是这样做的:
SELECT *
FROM owners o
WHERE NOT EXISTS (SELECT *
FORM dogs d
WHERE trained = true AND d.owner_id = o.id)
答案 1 :(得分:0)
SELECT *
FROM Owners o,Dogs d
WHERE o.id=d.owner_id
and d.trained=false;