提问人:Oedum 提问时间:11/21/2011 最后编辑:Lou FrancoOedum 更新时间:11/22/2011 访问量:92
如何查找一个表中的哪些记录在另一个表中没有相应的记录 [已关闭]
How do I find which records in a table have no corresponding record in another table [closed]
问:
我的数据库中有两个表。一个叫人,一个叫团队。一个人可以在一个团队中。 如何使用 LINQ 或 sql 检查是否亲自查找不在团队中的所有人员?
答:
0赞
Johnie Karr
11/21/2011
#1
你是说这样的东西?
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 的团队中不属于所有人员。
评论
0赞
Johnie Karr
11/21/2011
这是一个通用的解决方案,但如果社区知道您的表定义,那么我们可以更具体。
0赞
Adam Robinson
11/21/2011
他似乎在寻找一个根本不在团队中的人,而不是不在特定团队中的人。
0赞
Johnie Karr
11/21/2011
我想我只是误读了这个问题,然后:)
0赞
Adam Robinson
11/21/2011
显然不是!看起来你得到了复选标记;)
0赞
Johnie Karr
11/21/2011
如果我确实得到了复选标记,它就会被拿走:(
3赞
Mikael Eriksson
11/21/2011
#2
一个人可以在一个团队中
这让我猜到您在人员的表中有一个 TeamID FK 字段,该字段可以具有 null 值。
如何检查以找到所有不在团队中的人
这将给你所有不在团队中的人。
select *
from person
where TeamID is null
0赞
Lou Franco
11/21/2011
#3
你如何表示一个人与团队的联系。您是否亲自使用 teamID 字段?如果是这样,当一个人不在团队中时,你会怎么做?保持 null?
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
或者,如果您有其他事情,请告诉我们。
评论
0赞
Adam Robinson
11/21/2011
如果它不包括“幻数”方法,我会投赞成票。
0赞
Lou Franco
11/21/2011
我不是在建议它 - 但是,如果他使用它,这就是选择的方式。
评论