SELECT DISTINCT 去除重複

DISTINCT 關鍵字用來過濾重複的資料,只返回不重複的值。

語法

SELECT DISTINCT column1, column2, ...
FROM table_name;

基本用法

假設有一個 customers 資料表:

idnamecity
1張一台北
2王二高雄
3李三台北
4陳四台中

查詢有哪些城市有客戶:

SELECT DISTINCT city FROM customers;

結果:

city
台北
高雄
台中

原本有兩筆台北的資料,使用 DISTINCT 後只會出現一次。

多欄位 DISTINCT

當 DISTINCT 後面有多個欄位時,會以所有欄位的組合來判斷是否重複:

SELECT DISTINCT city, status FROM customers;

只有當 citystatus 兩個欄位值都相同時,才會被視為重複。

搭配聚合函數

DISTINCT 可以搭配聚合函數使用:

-- 計算有多少個不同的城市
SELECT COUNT(DISTINCT city) FROM customers;

-- 計算每個城市的不重複產品數量
SELECT city, COUNT(DISTINCT product_id)
FROM orders
GROUP BY city;

DISTINCT 與 GROUP BY 的差異

兩者都可以用來去除重複,但用途不同:

  • DISTINCT:單純去除重複的資料列
  • GROUP BY:分組後進行彙總計算
-- 只需要去重
SELECT DISTINCT city FROM customers;

-- 需要計算每組的數量
SELECT city, COUNT(*) FROM customers GROUP BY city;