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