mysql– 如何用JOIN替换NOT EXISTS?

mysql– 如何用JOIN替换NOT EXISTS?,第1张

概述我有以下查询:select distinct a.id, a.name from Employee a join Dependencies b on a.id = b.eid where not exists ( select * from Dependencies d where b.id = d.id and d

我有以下查询:

select distinct a.ID,a.namefrom Employee ajoin DependencIEs b on a.ID = b.eIDwhere not exists     ( select *     from DependencIEs d     where b.ID = d.ID     and d.name  = 'Apple'    )and exists     (    select *     from DependencIEs c     where b.ID = c.ID     and c.name  = 'Orange'    );

我有两张桌子,比较简单.
第一个Employee有一个ID列和一个name列
第二个表DependencIEs有3列,一个ID,一个eID(要链接的员工ID)和名称(apple,orange等).

数据看起来像这样
Employee表看起来像这样

ID  | name-----------1   | Pat2   | Tom3   | Rob4   | Sam

依赖

ID  | eID | name--------------------1   | 1   |  Orange2   | 1   |  Apple3   | 2   |  StrawBerry4   | 2   |  Apple5   | 3   |  Orange6   | 3   |  Banana

正如你所看到的,帕特同时拥有Orange和Apple,他需要被排除在外,它必须是通过连接,我似乎无法让它工作.最终数据应该只返回Rob最佳答案使用您想要的名称进行内连接,在您不使用的名称上左连接,然后使用where确保左连接无法匹配,如此(SQL Fiddle):

select distinct a.ID,a.namefrom Employee a  inner join DependencIEs b on a.ID = b.eID    and b.name = 'Orange'  left join DependencIEs c on ( a.ID = c.eID    and c.name = 'Apple')where c.ID is null;
总结

以上是内存溢出为你收集整理的mysql – 如何用JOIN替换NOT EXISTS?全部内容,希望文章能够帮你解决mysql – 如何用JOIN替换NOT EXISTS?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存