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.效果展示
方式一
方式二