Mysql GROUP BY查询每组某值最大的一条数据

 更新时间:2023年08月11日 15:04:31   作者:芥焉丶  
这篇文章主要介绍了Mysql GROUP BY查询每组某值最大的一条数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Mysql GROUP BY查询每组某值最大的一条数据

表结构如下

需求

查询每个学科(type)最高分(score)

想要的结果如下:

尝试通过group by order by 查询 sql 如下

SELECT * FROM `reports`  GROUP BY type ORDER BY score DESC;

结果如下:

order by 是在最后执行并不能查询到想要的结果

尝试通过group by 排序后的子查询 sql 如下

SELECT
	a.* 
FROM
	( SELECT * FROM `reports` ORDER BY score DESC) AS a 
GROUP BY
	a.type;

结果如下:

并没有得道正确的结果

然后查询资料看到有博客说需要在子查询加上limit,如下sql:

SELECT
	a.* 
FROM
	( SELECT * FROM `reports` ORDER BY score DESC LIMIT 10) AS a 
GROUP BY
	a.type;

结果如下:

结果是对了,但是总觉得奇怪,为什么要加 limit ,这不是我想要的

###尝试通过聚合函数查询,sql如下:

SELECT
  s.*,	max( s.score ) 
FROM
	( SELECT * FROM `reports`  GROUP BY type, name ORDER BY score DESC ) s 
GROUP BY
	s.type

结果如下:

搞定max( s.score ) 亦可拿掉

Mysql group by分组后每组选取一条结果

直接说思路

  • 按照某个字段进行分组
  • 选出你想要的结果
  • 回表查询

举个栗子

需求:

查询订单表(id, user_id, create_time, update_time),按照user_id分组,查询该表中,每个用户最新的一条订单(表中update_time最大的)

select * 
from order ss, (select MAX(sa.update_time) as time, sa.user_id FROM order sa where sa.user_id is not null GROUP BY sa.user_id) aa 
where ss.user_id = sa.user_id and ss.update_time = sa.time

**MAX(sa.update_time)**就是第二步,按照你的业务需求,查出你想要的结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL Group by的优化详解

    MySQL Group by的优化详解

    这篇文章主要介绍了MySQL Group by 优化的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • mysql中截取字符串的6个函数讲解

    mysql中截取字符串的6个函数讲解

    这篇文章主要介绍了mysql中截取字符串的6个函数讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • mysql利用init-connect增加访问审计功能的实现

    mysql利用init-connect增加访问审计功能的实现

    下面小编就为大家带来一篇mysql利用init-connect增加访问审计功能的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • MySQL中增删改查操作与常见陷阱详解

    MySQL中增删改查操作与常见陷阱详解

    这篇文章详细讲解了MySQL的增删改查的语句、语义和一些我们经常在开发工作中暴露的问题,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-11-11
  • 详解mysql基本操作语句命令

    详解mysql基本操作语句命令

    本文介绍了 链接Mysql,以及增删改查等功能,需要的朋友可以参考
    2017-04-04
  • MySQL kill不掉线程的原因

    MySQL kill不掉线程的原因

    这篇文章主要介绍了MySQL kill不掉线程的原因,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • MySQL5.x版本乱码问题解决方案

    MySQL5.x版本乱码问题解决方案

    这篇文章主要介绍了MySQL5.x版本乱码问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 使用Dify访问mysql数据库详细代码示例

    使用Dify访问mysql数据库详细代码示例

    这篇文章主要介绍了使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访问工作流和智能体,需要的朋友可以参考下
    2025-03-03
  • mysql 某字段插入随机数(插入随机数到MySQL数据库)

    mysql 某字段插入随机数(插入随机数到MySQL数据库)

    这篇文章主要介绍了mysql 某字段插入随机数(插入随机数到MySQL数据库),需要的朋友可以参考下
    2016-09-09
  • MySQL延迟问题和数据刷盘策略流程分析

    MySQL延迟问题和数据刷盘策略流程分析

    这篇文章主要介绍了MySQL延迟问题和数据刷盘策略流程分析,本文要给大家提到了mysql复制流程,需要的朋友可以参考下
    2020-02-02

最新评论