如何查找表中的哪些记录在另一个表中没有相应的记录

时间:2011-11-21 13:25:37

标签: sql database linq

我的数据库中有两个表。一个叫做人,一个叫做团队。一个人可以在一个团队中。 如何查看使用LINQ或sql查找不在团队中的所有人员?

3 个答案:

答案 0 :(得分:3)

  

一个人可以在一个团队中

这让我猜你在人员表中有一个可以有空值的TeamID FK字段。

  

如何检查所有不在团队中的人

这将为所有不在团队中的人提供帮助。

select *
from person
where TeamID is null

答案 1 :(得分:0)

你的意思是这样的吗?

 select *
 from person p
 join team t
 on p.TeamId = t.TeamId
 where p.TeamId <> 3

或在linq:

from p in persons
join t in teams on p.TeamId equals t.TeamId
where t.TeamId != 3
select p

这两个查询都将返回所有不在ID 3团队中的人。

答案 2 :(得分:0)

您如何表示一个人与团队的联系。您是否亲自使用teamID字段?如果是这样,当一个人不在团队中时你会怎么做?保持无效?

select * from person where teamID is null

将其设为-1?

select * from person where teamID == -1

也许你有一个person_team交叉表(这很奇怪,因为你说一个人只能在一个团队中)。如果是的话

SELECT * FROM person LEFT OUTER JOIN person_team
 ON (person.id = person_team.personID)
 WHERE person_team.personID IS NULL    

或者如果你还有别的东西 - 告诉我们。