select distinct 對單列去重,並取其他列第一行結果

所有數據

create table abc(id int, value int);
select id, value from abc;
+------+-------+
| id   | value |
+------+-------+
|    0 |     0 |
|    1 |     0 |
|    2 |     1 |
|    3 |     2 |
|    4 |     4 |
+------+-------+

value 去重

select distinct value from abc;
+-------+
| value |
+-------+
|     0 |
|     1 |
|     2 |
|     4 |
+-------+
select distinct value, id from abc;
+-------+------+
| value | id   |
+-------+------+
|     0 |    0 |
|     0 |    1 |
|     1 |    2 |
|     2 |    3 |
|     4 |    4 |
+-------+------+
select id, distinct value from abc;
語法報錯

對 value 去重,id 取第一行

select min(id), value from abc group by value;
+---------+-------+
| min(id) | value |
+---------+-------+
|       0 |     0 |
|       2 |     1 |
|       3 |     2 |
|       4 |     4 |
+---------+-------+

故如果要對某一列 (value) 去重,且保留其他列,則需要用 group 和 min/max 配合使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章