一 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】
關注公眾號: