繁体   English   中英

SQL联合查询左表中不匹配的行

[英]SQL Joint query for unmatched rows in left table

我有两个表,sfuser和membership

sfuser获得139,会员表获得50

我需要查询来选择谁不是任何项目的成员,这意味着89个成员

这是我的查询

select sfuser.id,sfuser.username,sfuser.email from sfuser INNER JOIN projectmembership ON sfuser.id = projectmembership.member_id ;

但是我正想获得50个成员用户,反之

请丢点光

最好的问候Sathish

select 
sfuser.id,
sfuser.username,
sfuser.email 
from sfuser 
LEFT JOIN projectmembership ON sfuser.id = projectmembership.member_id
WHERE 
projectmembership.member_id is NULL

它应该返回不在projectmembership表中的所有用户。

INNER JOIN将只产生与两个表都匹配的行。您可以进行左联接并过滤出空白记录。 就像是:

SELECT sfuser.id,
sfuser.username,
sfuser.email
FROM sfuser LEFT JOIN projectmembership ON sfuser.id = projectmembership.member_id
WHERE (projectmembership.member_id is null);

内部联接将返回在两个表之间共享进行联接的值的所有行。 (参见此图

您要查找的是左连接,即左表中所有不匹配的行。

select sfuser.id,
  sfuser.username,
  sfuser.email 
from sfuser 
LEFT JOIN projectmembership 
  ON sfuser.id = projectmembership.member_id

如果sfuser记录在项目成员资格表中可以多次出现,那么请忘记外部联接-NOT EXISTS是您想要的:

select sid,
       username,
       email
from   sfuser
where  not exists (
         select null
         from   projectmembership
         where  sfuser.id = projectmembership.member_id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM