MySQL去重資料

大雄45發表於2020-05-31
導讀 DISTINCT 實際上和 GROUP BY 操作的實現非常相似,只不過是在 GROUP BY 之後的每組中只取出一條記錄而已。所以,DISTINCT 的實現和 GROUP BY 的實現也基本差不多,沒有太大的區別。同樣可以透過鬆散索引掃描或者是緊湊索引掃描來實現,當然,在無法僅僅使用索引即能完成 DISTINCT 的時候,MySQL 只能透過臨時表來完成。但是,和 GROUP BY 有一點差別的是,DISTINCT 並不需要進行排序。

在使用 MySQL SELECT 語句查詢資料的時候返回的是所有匹配的行。

查詢 tb_students_info 表中所有 age 的執行結果如下所示。

mysql> SELECT age FROM tb_students_info;
+------+
| age  |
+------+
|   25 |
|   23 |
|   23 |
|   22 |
|   24 |
|   21 |
|   22 |
|   23 |
|   22 |
|   23 |
+------+
10 rows in set (0.00 sec)

可以看到查詢結果返回了 10 條記錄,其中有一些重複的 age 值,有時出於對資料分析的要求,需要消除重複的記錄值。這時候就需要用到 DISTINCT 關鍵字指示 MySQL 消除重複的記錄值,語法格式為:

SELECT DISTINCT <欄位名> FROM <表名>;

查詢 tb_students_info 表中 age 欄位的值,返回 age 欄位的值且不得重複,輸入的 SQL 語句和執行結果如下所示。

mysql> SELECT DISTINCT age FROM tb_students_info;
+------+
| age  |
+------+
|   25 |
|   23 |
|   22 |
|   24 |
|   21 |
+------+
5 rows in set (0.11 sec)

由執行結果可以看到,這次查詢結果只返回了 5 條記錄的 age 值,且沒有重複的值。

原文來自: 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2695350/,如需轉載,請註明出處,否則將追究法律責任。

相關文章