SQL去重distinct方法解析


一 distinct

含義:distinct用來查詢不重復記錄的條數,distinct來返回不重復字段的條數(count(distinct id),其原因是distinct只能返回他的目標字段,而無法返回其他字段

用法注意:

1.distinct 【查詢字段】,必須放在要查詢字段的開頭,即放在第一個參數;

2.只能在SELECT 語句中使用,不能在 INSERT, DELETE, UPDATE 中使用;

3.DISTINCT 表示對后面的所有參數的拼接取 不重復的記錄,即查出的參數拼接每行記錄都是唯一的

4.不能與all同時使用,默認情況下,查詢時返回的就是所有的結果。

 

1.1只對一個字段查重

對一個字段查重,表示選取該字段一列不重復的數據。

示例表: psur_list

PLAN_NUMBER字段去重,語句:SELECT DISTINCT PLAN_NUMBER  FROM psur_list;

結果如下:

 

1.2多個字段去重

對多個字段去重,表示選取多個字段拼接的一條記錄,不重復的所有記錄

示例表: psur_list

PLAN_NUMBER和PRODUCT_NAME字段去重,語句:SELECT DISTINCT PLAN_NUMBER,PRODUCT_NAME FROM psur_list;

結果如下:

 

 

 期望結果:只對第一個參數PLAN_NUMBER取唯一值

解決辦法一: 使用 group_concat 函數

語句:SELECT GROUP_CONCAT(DISTINCT PLAN_NUMBER) AS PLAN_NUMBER,PRODUCT_NAME FROM psur_list GROUP BY PLAN_NUMBER

解決辦法二:使用group by

語句:SELECT PLAN_NUMBER,PRODUCT_NAME FROM psur_list GROUP BY PLAN_NUMBER

結果如下:

 

1.3針對null處理

distinct不會過濾掉null值,返回結果包含null值

表psur_list如下:

對COUNTRY字段去重,語句:SELECT DISTINCT COUNTRY FROM psur_list

結果如下:

 

1.4與distinctrow同義

語句:SELECT  DISTINCTROW COUNTRY FROM psur_list 

結果如下:

 

 

 二 聚合函數中使用distinct

在聚合函數中DISTINCT 一般跟 COUNT 結合使用。count()會過濾掉null項

語句:SELECT COUNT(DISTINCT COUNTRY) FROM psur_list

結果如下:【實際包含null項有4個記錄,執行語句后過濾null項,計算為3】

 

關注公眾號:

 


免責聲明!

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



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