資料庫

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 ...

9 個月 ago

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

本篇介紹如何在 Ubuntu ...

10 個月 ago

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

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

10 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

11 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

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

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

11 個月 ago