MySQL中使用distinct單、多字段去重方法

在MySQL數據庫中,「distinct」關鍵字可以用來從資料表或查詢結果集中移除重複的記錄,只保留第一個出現的值。以下是如何使用「distinct」單一或多個欄位進行去重的詳細說明。

1. 單一欄位的去重

如果你想要對資料表中的單一欄位進行去重,你可以直接在SELECT子句後面加上「DISTINCT」關鍵字,然後指定要檢查的唯一性欄位名稱。例如,假設我們有一張員工資料表(employees),其中有ID、姓名(name)、部門(department_id)等多個欄位,如下所示:

+----+--------+-------------+--------------+
| ID | name   | department_id| salary       |
+----+--------+-------------+--------------+
|  1 | John   |        100  | $50,000      |
|  2 | Jane   |        200  | $60,000      |
|  3 | Mike   |        100  | $40,000      |
|  4 | Anna   |        300  | $70,000      |
+----+--------+-------------+--------------+

若想取得每個部門的第一筆紀錄,可以使用以下SQL語句:

SELECT DISTINCT department_id FROM employees;

執行這個查詢會得到以下的結果集:

+--------------+
| department_id|
+--------------+
|        100  |
|        200  |
|        300  |
+--------------+

2. 多個欄位的去重

如果你需要基於兩個或多個欄位進行去重,則可以在「DISTINCT」後面列出所有這些欄位的名稱。這樣可以確保只有完全相同的行才被視為重複。舉例來說,如果我們希望只在員工資料表中顯示不同的部門與薪資組合,可以使用下面的SQL語句:

SELECT DISTINCT department_id, salary FROM employees;

這將產生以下結果集:

+--------------+----------+
| department_id| salary   |
+--------------+----------+
|        100  | $50,000  |
|        200  | $60,000  |
|        300  | $70,000  |
+--------------+----------+

請注意,在上面的例子中,即使有兩個員工的部門ID都是100(John和Mike),但因為他們的薪資不同,所以兩者都被包含在結果集中。

總結

在MySQL中,使用「DISTINCT」關鍵字可以有效地去除資料表或查詢結果集中的重複記錄。它既支援單一欄位的去重,也支援基於多個欄位條件的多重唯一性檢測。根據具體需求選擇適當的去重策略對於優化資料庫查詢非常重要。

为您推荐