假设我有一个表 Person,他拥有许多 Books,涵盖许多 Subjects。 一本书可能还没有分配任何主题。
使用左连接和空检查很容易查询拥有一些没有主题的书籍的人。例如:
select * from persons p
inner join person_book pb on pb.person_id = p.id
left join book_subject bs on bs.book_id = person_book.book_id
where book_subject.book_id is null;
查询只拥有没有既定主题的书籍的人的最佳方法是什么?
我知道我可以找到有书的人,以及至少有 1 本主题书的人,然后找出不同之处。但是有直接的方法吗?
(如果它有所不同,这将在 MySQL 中)。
最佳答案
尝试:
select p.*
from persons p
inner join person_book pb on pb.person_id = p.id
left join book_subject bs on bs.book_id = person_book.book_id
group by p.id
having count(bs.book_id) = 0
关于mysql - 如何最好地执行 SQL left join null 检查所有必须为 null 的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368279/