返回顶部
首页 > 资讯 > 数据库 >MySQL group by后取每个分组中最新一条数据
  • 935
分享到

MySQL group by后取每个分组中最新一条数据

mysql数据库sql 2023-09-02 10:09:34 935人浏览 八月长安
摘要

一、需求 Mysql group by后取每个分组中最新一条数据 二、实现 1)方案1:使用min()和max()方法 group by后取每个分组中最新一条数据 SELECT MAX(test_id) FROM test GROU

一、需求

Mysql group by后取每个分组中最新一条数据

二、实现

1)方案1:使用min()和max()方法

group by后取每个分组中最新一条数据

SELECT MAX(test_id) FROM test GROUP BY test_user_id;

group by后取每个分组中第一条插入的数据

SELECT MIN(test_id) FROM test GROUP BY test_user_id;

group by后,获取每个分组中大于一条数据的记录

SELECT count(*) as num FROM test GROUP BY test_user_id HAVING num>1;

group by后,获取每个分组中大于一条数据的记录的最新一条数据

SELECT MAX(test_id) FROM test GROUP BY test_user_id HAVING COUNT(*)>1;

group by后,获取每个分组中多条记录的test_id拼接串

SELECT GROUP_CONCAT(test_id) FROM test GROUP BY test_user_id;

group by后,获取每个分组中多条记录的test_id和test_ctime拼接串

通过group_concat()可以获取每个分组中多条记录的test_id拼接串,GROUP_CONCAT(test_id,"=",test_ctime)返回分组中每条记录对应的test_id和test_ctime,test_id和test_ctime通过“=”号拼接,方便查看每条记录对应的数据;

SELECT GROUP_CONCAT(test_id,"=",test_ctime),GROUP_CONCAT(test_id),GROUP_CONCAT(test_ctime) FROM test GROUP BY test_user_id;

 

***小结***

sql中存在group by,那么sql中的select 语句是对每个分组进行操作的,而不是对分组的结果集进行操作的;

比如select MAX(test_id) 返回每个分组中多条记录中最大的一条记录;

select group_concat(test_id) 返回每个分组中多条记录的test_id拼接串;

select 语句中包含聚合函数,将计算每组多条记录;汇总值

2)方案2:order by和group by配置使用

按照字段的排序order by后使用group by,方可获取每个分组中按照某字段排序后的第一条数据;

使用方案1更便捷准确哦。

来源地址:https://blog.csdn.net/u010865136/article/details/126887638

您可能感兴趣的文档:

--结束END--

本文标题: MySQL group by后取每个分组中最新一条数据

本文链接: https://lsjlt.com/news/390516.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作