minus 如何实现不去重效果

minus 是 oracle 数据库中的一个关键字,用来取两个结果集的差集。

举个栗子:第一个结果集有 1,2,3,4,5,第二个结果集有 4,5,6,7。前者减后者得 1,2,3,后者减前者得 6,7。

minus 有去重作用,会对减完的结果集去重。还是上面的栗子,如果第一个结果集有两个 1,那取差集后只能得到一个 1。

但是我实际的需求是不想要去重,该怎么办呢?找到了两个方法,如下:

一、用 not exists

改不了 minus 关键字,那就只能用其他的关键字来实现类似的效果了。
not exists 是可以很简单、很方便实现 minus 的差集效果的
栗子:有表数据如下
在这里插入图片描述
效果如下:

minus在这里插入图片描述
not exists在这里插入图片描述

后面我还发现如果需要保留一些特殊列值时,not exists 可以很方便,而 minus 不方便实现,比如需要保留原数据序号,每行数据的序号是不一样的,这样就用不了 minus

二、用 left join

经过自己测试,如果做差集的两个结果集来自于同一个表,似乎就不适用了。如果是两个表,那可以实现需要的效果。
表2原数据
在这里插入图片描述
差集效果:
在这里插入图片描述

最后,不管是minus,还是not exists,或是left join,哪个能满足自己的需求,越简单越方便越好,就用哪个吧

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值