![](/img/trans.png)
[英]SQL Query for : rows linked by one joint table link to another joint table
[英]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.