SQL分组查询取第一条数据

SQL分组查询取第一条数据,第1张

我们在查询数据时,经常会使用distinct去重,但使用distinct只能去除所有查询列都相同的记录,如果所查询列中有一个字段值不同,distinct是无法去重的。但我们还想要实现这样的效果,这时我们可以用partition by。

1.例如,我们新建一张学生成绩表。

2.插入一些测试数据。

3.例如我们需要查询每个科目不同的分数,这时候可以用到distinct:

4.但是我们把需求再加一点,需要查询每个科目排名第一的学生信息,这时候就需要用到partition by:

PS:MySQL5.6不支持partition by

此时我们发现,并且第一的小明同学的英语成绩没有被查询出来,接着优化:

需要准备的工具:电脑,sql数据库。

1、首先新建一个test表,有id,name,second三个字段,其中name字段有重复数据。

2、输入“select name,max(second) from test group by name”语句,点击运行。

3、可以看到已经查询出按name分组后取出的second最大的一条记录。

4、以输入“select name,max(second) from test group by name order by max(second) desc”语句,按分组后second最大值进行降序。

5、如果想查询mysql分组后最小的一条记录,输入“select name,min(second) from test group by name”语句,点击运行即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6761219.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存