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