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()最小值的记录有多条,所以结果集还是会重复。

猜你喜欢

转载自www.cnblogs.com/xyhero/p/1c7b545150b29207da43855e74a5a46b.html
今日推荐