資料庫

MySQL/MariaDB 資料庫 DISTINCT 刪除重複資料教學與範例

介紹如何使用 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)完全相同的資料,如果我們同時看 namecity 兩個欄位,結果就會不同:

-- 列出所有不重複的 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

Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

1 年 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

1 年 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

1 年 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

1 年 ago