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

  • 相关阅读:
    HDU 1874 畅通工程续
    HDU 1232 畅通工程
    HDU 1233 还是畅通工程
    HDU 1269 迷宫城堡
    洛谷 P1078 文化之旅
    POJ 3461 Oulipo
    最长链
    矩形面积求并
    有趣的数
    修复公路
  • 原文地址:https://www.cnblogs.com/xyhero/p/1c7b545150b29207da43855e74a5a46b.html
Copyright © 2020-2023  润新知