首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当A.PUID = B.EUID和A.PID <> B.LID时,如何从结果中排除PUID的所有记录

当A.PUID = B.EUID和A.PID <> B.LID时,如何从结果中排除PUID的所有记录
EN

Stack Overflow用户
提问于 2020-11-14 04:46:22
回答 3查看 61关注 0票数 0

当A.PUID = B.EUID和A.PID <> B.LID时,如何从结果中排除PUID的所有记录

表A

代码语言:javascript
复制
PUID PID PCODE                               
100        1003    RG    
200        1006    CA    
200        1007    CA    
300        1008    RG

表B

代码语言:javascript
复制
EUID      LID        ECODE    
100       1003        RG    
100       1004         RG    
100        1005        RG    
200        1006         CA    
300         1009       RG

预期结果

代码语言:javascript
复制
PUID          PID             ECODE    
300          1008              RG

尝试了不存在,但没有工作。表的屏幕打印

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-11-14 07:48:53

您可以尝试下面的- 演示

代码语言:javascript
复制
select A.* from A
join
(
select A.puid
from A left join B on A.puid=B.puid and A.pid=B.pid
group by A.puid having sum(case when B.pid is null then 0 else 1 end)=0
)X on A.puid=X.puid
票数 0
EN

Stack Overflow用户

发布于 2020-11-14 07:37:09

查看一下数据库的联接逻辑,如果您在一个列上联接,您可以选择那些相同(包含)或空(不包含)的连接,有不同类型的连接可以与where语句结合使用,在作业分配中您的导师希望您理解和应用它们。

打开google,查看连接,或者查看这个join.asp

票数 0
EN

Stack Overflow用户

发布于 2020-11-14 13:34:52

我想我应该使用一个left join和窗口函数:

代码语言:javascript
复制
select a.*
from (select a.*,
             count(b.euid) over (partition by a.puid) as num_matches
      from a left join
           b
           on a.puid = b.euid and a.pid = b.lid
     ) a
where num_matches = 0;

这里是db<>fiddle。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64831023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档