当前位置: 代码迷 >> Oracle管理 >> oracle exists 的用法,求解,该如何处理
  详细解决方案

oracle exists 的用法,求解,该如何处理

热度:599   发布时间:2016-04-24 04:21:49.0
oracle exists 的用法,求解
用not exists执行结果和minus结果不同。

aaa表
id      name
1 张三
2 李四
3 王五
4 张三
5 李四
6 xxx

b表
id      name
1 张三
2 李四
3 王五
4 王五
5 李四



select *
  from (select max(id) id, name from aaa group by name) t
 where not exists (select 1
          from (select max(id) id, name from b group by name) b
         where b.id = t.id
           and b.name = t.name)
 order by t.id;


结果:
id      name
2 李四
3 王五
4 张三
6 xxx


select max(id) id, name from aaa group by name
minus
select max(id) id, name from b group by name;


结果:
3 王五
4 张三
6 xxx
------解决方案--------------------
,先过滤 not exists  后 分组
------解决方案--------------------
不一样也很正常啊,你到底关心啥。

前者各语句之间是互相影响的,共同作用出最后的结果集;
而后者是完整独立的执行两个SQL,然后再做减法。
------解决方案--------------------
太神奇了,我这里执行是没有的,你自己再检查检查吧。。。或者发个图片出来看看你的执行结果包括SQL语句
  相关解决方案