SQL单个或分组去重复查询方法
以下是用来测试的数据:
表名:t_Demo
ID | Name | Project | Grade |
1 | 小明 | 数学 | 59 |
1 | 小明 | 语文 | 59 |
1 | 小明 | 英语 | 59 |
2 | 小红 | 数学 | 100 |
2 | 小红 | 语文 | 99 |
3 | 小白 | 数学 | 100 |
3 | 小白 | 语文 | 90 |
3 | 小白 | 英语 | 80 |
3 | 小白 | 政治 | 70 |
3 | 小白 | 历史 | 60 |
4 | 小黑 | 数学 | 89 |
4 | 小黑 | 语文 | 89 |
4 | 小黑 | 英语 | 90 |
1.单个字段去重复查询
我们现在想获取以上表格中ID字段信息表,并且去掉重复的数值,也就是说我们现在想要获取表中ID有多少。
select id from t_Demo group by id
查询结果:
ID |
1 |
2 |
3 |
4 |
2.多字段去重复查询
如果需要获取ID和Name去掉重复值信息表,相当于得到现在这个表格中有多少人。
select id,Name from t_Demo group by id,Name
查询结果:
ID | Name |
1 | 小明 |
2 | 小红 |
3 | 小白 |
4 | 小黑 |
3.多字段去重复并且获取重复的数目
现在我们需要获取表中每个人所有成绩数目
select ID,Name,count(distinct Project) as num from t_Demo group by ID,Name
查询结果:
ID | Name | num |
1 | 小明 | 3 |
2 | 小红 | 2 |
3 | 小白 | 5 |
4 | 小黑 | 3 |