问题标题有点模糊,因为我不知道如何简要解释它。
我有3张桌子:
Project (projectid, name, description)
Person(personid, name, description)
ProjectPerson(projectid, personid)
项目和人通过ProjectPerson表有多对多的关系
我想创建一个SQL查询来查找不在任何项目中的所有人。
我有一个解决方案:获取所有人,获取ProjectPerson中的所有条目并删除ProjectPerson中存在的人员条目。
然而它似乎有点愚蠢。谁能告诉我一个更好的方法?提前致谢
答案 0 :(得分:2)
您可以使用left join
执行此操作。然后,在where
子句中检查不匹配:
select p.*
from Person p left outer join
ProjectPerson pp
on p.personid = pp.personid
where pp.personid is null
答案 1 :(得分:0)
我在Google上找到了解决方案。谢谢你的阅读。
select *
from Person
where Person.personid not in (select personid from ProjectPerson)