distinct實現單列去重的解決方法

衆所周知,distinct是不可以對單列進行去重。但是多種字段去重又應該怎樣實現呢?
如下表所示:(表命名爲table)

id value
1 A
2 B
3 B
4 C
4 D
5 E

1.對id進行去重

select distinct id from table ;

結果:
| id |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
結論:distinct + 單列字段 去重
2.在1的基礎上加value字段,對value進行去重

select disinct value,id from table;

結果:
| id | | value |
| 1 | | A |
| 2 | | B |
| 3 | | B |
| 4 | | C |
| 4 | | D |
| 5 | | E |
結論:distinct +多字段,只能在多字段相同時才能進行去重
那麼,如果將distinct value換個位置是不是就可以單獨對它進行去重了呢?

select id,distinct value from table;

結果:
報錯
結論:distinct 必須放在前面
那麼,如果就是想在查詢多字段的時候對value排重要怎麼做呢?
我們可以使用group by的方法

select value ,min(id) from table group by value

結果:
| id | | value |
| 1 | | A |
| 3 | | B |
| 4 | | C |
| 4 | | D |
| 5 | | E |
結論:min(id),會將id小的以及對應的value值刪除。當DISTINCT無法滿足只對單字段去重,並希望結果中顯示對應的多字段內容的時候,可以用group by函數實現。

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