假设我拥有表人员,他拥有许多书籍,涵盖了许多主题.一本书可能还没有分配任何主题.
查询拥有某些书籍的人员很容易,这些书籍没有具有左连接和空检查的主题.例如:
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;
Run Code Online (Sandbox Code Playgroud)
查询仅拥有没有既定主题的书籍的人的最佳方法是什么?
我知道我可以找到有书的人,以及至少有一本有主题的书的人,然后找到差异.但是有直接的方法吗?
(如果它有所不同,这将在MySQL中).
小智 7
尝试:
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
Run Code Online (Sandbox Code Playgroud)