MySQL查询以查找未映射的结果

时间:2013-08-31 12:28:12

标签: mysql

问题标题有点模糊,因为我不知道如何简要解释它。

我有3张桌子:

Project (projectid, name, description)
Person(personid, name, description)
ProjectPerson(projectid, personid)

项目和人通过ProjectPerson表有多对多的关系

我想创建一个SQL查询来查找不在任何项目中的所有人。

我有一个解决方案:获取所有人,获取ProjectPerson中的所有条目并删除ProjectPerson中存在的人员条目。

然而它似乎有点愚蠢。谁能告诉我一个更好的方法?提前致谢

2 个答案:

答案 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)