SELECT DISTINCT 去除重複
DISTINCT 關鍵字用來過濾重複的資料,只返回不重複的值。
語法
SELECT DISTINCT column1, column2, ...
FROM table_name;
基本用法
假設有一個 customers 資料表:
| id | name | city |
|---|---|---|
| 1 | 張一 | 台北 |
| 2 | 王二 | 高雄 |
| 3 | 李三 | 台北 |
| 4 | 陳四 | 台中 |
查詢有哪些城市有客戶:
SELECT DISTINCT city FROM customers;
結果:
| city |
|---|
| 台北 |
| 高雄 |
| 台中 |
原本有兩筆台北的資料,使用 DISTINCT 後只會出現一次。
多欄位 DISTINCT
當 DISTINCT 後面有多個欄位時,會以所有欄位的組合來判斷是否重複:
SELECT DISTINCT city, status FROM customers;
只有當 city 和 status 兩個欄位值都相同時,才會被視為重複。
搭配聚合函數
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;