介紹如何使用 DISTINCT
將查詢結果中重複的資料移除,只留下不重複的資料。
假設我們已經建立了一張 persons
資料表,其內容如下:
-- 查看 persons 資料表內所有資料 SELECT * FROM persons;
+----+-------+------+---------+ | id | name | age | city | +----+-------+------+---------+ | 1 | Arden | 32 | Taipei | | 2 | Bond | 54 | Taipei | | 3 | Cole | 12 | Hsinchu | | 4 | Dana | 19 | Hsinchu | | 19 | Bond | 33 | Taipei | +----+-------+------+---------+
如果想要列出所有不重複的 city
資料,就可以使用 DISTINCT
:
-- 列出所有不重複的 city 資料 SELECT DISTINCT city FROM persons;
+---------+ | city | +---------+ | Taipei | | Hsinchu | +---------+
DISTINCT
只會刪除整列(row)完全相同的資料,如果我們同時看 name
與 city
兩個欄位,結果就會不同:
-- 列出所有不重複的 name 與 city 資料 SELECT DISTINCT name, city FROM persons;
+-------+---------+ | name | city | +-------+---------+ | Arden | Taipei | | Bond | Taipei | | Cole | Hsinchu | | Dana | Hsinchu | +-------+---------+
如果想要計算各城市中不重複人數,可以配合 GROUP BY
的方式,依照城市分組,在將各城市內重複的人名刪除後計算總合:
-- 計算各城市不重複人數 SELECT city, COUNT(DISTINCT name) FROM persons GROUP BY city;
+---------+----------------------+ | city | COUNT(DISTINCT name) | +---------+----------------------+ | Taipei | 2 | | Hsinchu | 2 | +---------+----------------------+
參考資料:MySQL Tutorial