我們在去重的時候,有幾種情況:
- 對某一列或者多列去重,即某列相同或者某幾列完全相同就去重
- 所有列相同時對這一列去重
假設有一張名為logs的表如下:
我們先看幾種寫法:- 隻對單獨列去重并傳回單獨列時
SELECT DISTINCT Num
FROM `logs`
肯定符合我們的想法。
- 隻對num列去重,并且保留Id列
這時候就有歧義了,當對num去重,顯示的Id列是哪個了?比如說:num為1時,Id有1,2,3,5,是保留1還是2還是3還是5?是以需要說明,這時候DISTINCT就失效了,
SELECT Id, DISTINCT Num
FROM `logs`
上面的語句報錯。DISTINCT必須放在開頭。 SELECT DISTINCT Num Id
FROM `logs`
上面的語句是對Num,Id兩列共同去重,并不是我們想要的。 SELECT max(Id), num
FROM `logs`
GROUP BY num
這時候就需要用GROUP BY + MAX/MIN對Num分組篩選最大的Id還是最小的Id.