oracle数据库查询重复记录

1、row_number()方法

1
2
3
4
5
6
7
8
9
10
11
SELECT
     row_number () over (
         PARTITION  BY  v.action_id
         ORDER  BY
             v.action_exp_id
     ) rank,
     v.*
FROM
     test_view20180122 v
WHERE
     v.rank = 1

根据重复字段进行分组后排序,取rank=1的记录

2、使用rownum,效率最高

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
     *
FROM
     test_view20180122 v
WHERE
     v.rowid > (
         SELECT
             min (v1.rowid)
         FROM
             test_view20180122 v1
         WHERE
             v.action_id = v1.action_id
     )

但是对于有3条及以上重复记录的表还有问题,因为大于min()最小值的记录有多条,所以结果集还是会重复。

转载于:https://www.cnblogs.com/xyhero/p/1c7b545150b29207da43855e74a5a46b.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值