今天遇到一个问题,客户要求根据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