Sql 比较两个表并删除匹配的表
我有两张桌子。MembID是每个字段返回的唯一列。MembID可以在两个表中,但我想从结果中删除两个表中的MembID 我希望最后一次返回是A表中的456和789 我试过:Sql 比较两个表并删除匹配的表,sql,Sql,我有两张桌子。MembID是每个字段返回的唯一列。MembID可以在两个表中,但我想从结果中删除两个表中的MembID 我希望最后一次返回是A表中的456和789 我试过: select distinct a.membid from a left join b on a.membid = b.membid and b.num <> 1 它不会返回任何结果 谢谢 试试下面的方法 select distinct a.membid from a left join b on a.m
select distinct a.membid
from a
left join b on a.membid = b.membid
and b.num <> 1
它不会返回任何结果
谢谢 试试下面的方法
select distinct a.membid
from a
left join b on a.membid = b.membid
where b.membid is null
MembID可以在两个表中,但我想从结果中删除两个表中的MembID
如果您只希望成员位于一个表中,则有一种方法:
select memberid
from ((select memberid, 1 as in_a, 0 as in_b from a
) union all
(select memberid, 0, 1 from b
)
) ab
group by memberid
having max(in_a) + max(in_b) = 0;
请注意,此版本允许在每个表中重复
在支持基于集的运算符的数据库中,还可以执行以下操作:
(select memberid from a union
select memberid from b
) except -- sometimes this is minus
(select memberid from a intersect
select memberid from b
);
编辑:
您对问题的描述与您的数据不匹配。您似乎希望a中的成员不在b中。一种方法阐述了第一种方法:
select memberid
from ((select memberid, 1 as in_a, 0 as in_b from a
) union all
(select memberid, 0, 1 from b
)
) ab
group by memberid
having max(in_a) + max(in_b) = 0;
或者第二个:
select memberid from a
except -- or minus
select memberid from b
但是,我通常会这样做:
select distinct memberid
from a
where not exists (select 1 from b where b.memberid = a.memberid);