• oracle 多字段去重查询


    oracle 多字段去重查询

    CreationTime--2018年6月29日15点11分

    Author:Marydon

    1.情景展示

      需要对表BASE_MRI_DEVICE的COMPNAME、FIELDSTR、VERSION字段分别进行去重查询,如何使用一个sql搞定?

    2.需求分析

      注意:是分别对3个字段进行去重,而不是3个字段联合去重。

      首先,必须进行三次查询,而将查询结果进行"行合并"需要用到union或union all;

      其次,为了区分查询结果属于哪个字段,所以需要3列,

      同时,为了保证每次查询只对一个字段进行去重查询,可以将另外2个字段置空。

    3.代码实现

      方式一:使用group by(数据库通用)

    --对COMPNAME、FIELDSTR、VERSION进行去重查询
    SELECT *
      FROM (SELECT COMPNAME, '' FIELDSTR, '' VERSION
              FROM BASE_MRI_DEVICE
            UNION ALL
            SELECT '' COMPNAME, FIELDSTR, '' VERSION
              FROM BASE_MRI_DEVICE
            UNION ALL
            SELECT '' COMPNAME, '' FIELDSTR, VERSION
              FROM BASE_MRI_DEVICE)
     GROUP BY COMPNAME, FIELDSTR, VERSION

      方式二:使用distinct(Oracle独有)

    --对COMPNAME、FIELDSTR、VERSION进行去重查询
    SELECT DISTINCT COMPNAME, '' FIELDSTR, '' VERSION
      FROM BASE_MRI_DEVICE
    UNION ALL
    SELECT DISTINCT '' COMPNAME, FIELDSTR, '' VERSION
      FROM BASE_MRI_DEVICE
    UNION ALL
    SELECT DISTINCT '' COMPNAME, '' FIELDSTR, VERSION
      FROM BASE_MRI_DEVICE

    4.效果展示

      方式一

      方式二

  • 相关阅读:
    @雅礼集训01/13
    @hdu
    @bzoj
    @hdu
    @bzoj
    @雅礼集训01/10
    @codeforces
    @spoj
    @bzoj
    @bzoj
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/9243754.html
Copyright © 2020-2023  润新知