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