【问题标题】:Oracle, How to filter duplicated row data?Oracle,如何过​​滤重复的行数据?
【发布时间】:2017-10-22 22:18:30
【问题描述】:

该表有 30+ 列,并且有很多重复的行数据,如下所示:

col_1  col_2  col_3
1      2      2
2      3      2
1      2      2
3      2      2
1      2      2
2      3      2
3      2      2

我想选择所有数据并过滤这些重复的行,过滤后的结果是

col_1  col_2  col_3
1      2      2
2      3      2
3      2      2

我发现 DISTINCTGROUP BY 有效,但我应该输入许多列名。有没有更简单的方法?

【问题讨论】:

标签: oracle oracle11g


【解决方案1】:

最简单的方法

select distinct * from table

select distinct col_1, col_2, col_3 from table

【讨论】:

    【解决方案2】:

    添加到@Przemo 答案,你最好使用select distinct * from table

    您也可以类似地使用select unique * from table

    如果您希望数据库只返回每组选定重复行的一个副本,请指定 DISTINCT 或 UNIQUE。

    但不在Group by中,

    Group by 不能用于*,你must specific column names

    分组依据 { 列名 [ , 列名 ]*

    column-Name 必须是当前查询范围内的一列

    【讨论】:

    • 您好,我该如何提高DISTINCT 的性能,因为有100,000,000+ 行,需要很长时间才能得到结果。
    • 性能是一个不同的问题,您需要在表格上添加更多数据并解释计划...
    • 谢谢,希望Oracle有类似Hadoop的MapReduce的机制。
    猜你喜欢
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2019-06-15
    相关资源
    最近更新 更多