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

  方式一

  方式二

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM