oracle 多字段去重查询

oracle 多字段去重查询

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

Author:Marydon

1.情景展现

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

2.需求分析

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

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

  其次,为了区分查询结果属于哪一个字段,因此须要3列,oracle

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

3.代码实现

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

--对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独有)htm

--对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.效果展现

  方式一blog

  方式二get

 

相关文章
相关标签/搜索