今天遇到一個問題,客戶要求根據id字段去重後返回所有字段的內容。本來想用多重查詢然後用in來完成嵌套,但是考慮效率問題還是用distinct和min + group by吧。
原數據表內容:
id name
1 a
2 b
3 c
4 c
5 b
用戶需要獲取以下數據結果集:
id name
1 a
2 b
3 c
有兩種方式可以達到效果:
一、使用distinct:select *, count(distinct name) from table group by name
二、使用min + group by:select name,min(id) id from table group by name
以上兩種方法請根據情況選用。因為group by需要枚舉幾乎所有的字段,所以在字段特別多的時候不建議使用。distinct方法相對簡便,但是會多出一個字段,不是很干淨。
關鍵詞:查詢 字段 去重 distinct group by