服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - SQL Group By分组后如何选取每组最新的一条数据

SQL Group By分组后如何选取每组最新的一条数据

2022-11-28 15:14小白鸭 Mysql

经常在分组查询之后,需要的是分组的某行数据,例如更新时间最新的一条数据,下面这篇文章主要给大家介绍了关于SQL Group By分组后如何选取每组最新的一条数据的相关资料,需要的朋友可以参考下

Group By分组后选取每组最新的一条数据

问题

group by语句只会展示一条数据,而且很多时候并不会展示我们想要的数据,如何解决呢

首先我们先建一张表 temp,如下

SQL Group By分组后如何选取每组最新的一条数据

我们先试一下分组查询,看看结果

SELECT * FROM `temp`  GROUP BY address

结果如下:

SQL Group By分组后如何选取每组最新的一条数据

它默认是取的id最小的那一条数据,如果想要取最新的一条呢,我们试试先排序再分组

SELECT
	* 
FROM
	(SELECT * FROM `temp` ORDER BY `create_time` desc) AS t 
GROUP BY
	t.`address`

看看结果:

SQL Group By分组后如何选取每组最新的一条数据

发现结果没变,就像排序好像没生效一样,下面有两种解决方法

方法一:加limit关键字

SELECT
	* 
FROM
	(SELECT * FROM `temp` ORDER BY `create_time` desc limit 100) AS t 
GROUP BY
	t.`address`

现在结果就是我们想要的了

SQL Group By分组后如何选取每组最新的一条数据

但是limit关键字,有时候可能不好限制范围,如果你想查所有的数据呢,难道要单独查一下有多少条数据,再limit吗,好像显得不太专业,所以下面有方法二

方法二:用max函数

SELECT t1.* 
FROM `temp` t1,
( SELECT MAX( id ) id FROM `temp` GROUP BY address ) AS t2 
WHERE
	t1.id = t2.id

这种事先将每个分组最大的id取出来,再拼接数据,也能达到一样的效果,结果如下:

SQL Group By分组后如何选取每组最新的一条数据

如果你不想取最新的,想取中间某个范围的,还能加where条件

SELECT t1.* 
FROM `temp` t1,
( SELECT MAX( id ) id FROM `temp` WHERE create_time < "2022-08-16" GROUP BY address ) AS t2 
WHERE
	t1.id = t2.id

结果如下:

SQL Group By分组后如何选取每组最新的一条数据

好啦,问题解决了

总结

到此这篇关于SQL Group By分组后如何选取每组最新的一条数据的文章就介绍到这了,更多相关Group By分组选取最新数据内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/qq_43604221/article/details/126351473

延伸 · 阅读

精彩推荐
  • Mysql使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '''' for column ''createtime''的快速解决方法

    使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '''' for co

    我的MySQL安装后,保存删除表数据总是出现#1929 Incorrect datetime value: '' for column 'createtime' 的报错提醒,导致不能删除表里数据。下面小编给大家分析原因及解...

    月光如注4862020-07-15
  • MysqlMySQL 数据库对服务器端光标的限制

    MySQL 数据库对服务器端光标的限制

    从MySQL 5.0.2开始,通过mysql_stmt_attr_set() C API函数实现了服务器端光标。服务器端光标允许在服务器端生成结果集,但不会将其传输到客户端,除非客户端请...

    mysql教程网2902019-10-26
  • Mysql全面盘点MySQL中的那些重要日志文件

    全面盘点MySQL中的那些重要日志文件

    大家好,本篇文章主要讲的是全面盘点MySQL中的那些重要日志文件,感兴趣的同学快来看一看吧,对你有用的话记得收藏,方便下次浏览...

    一只独立特行的pig11352022-01-11
  • MysqlMysql5 字符集编码问题解决

    Mysql5 字符集编码问题解决

    mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是我使用的经验来看,制定数据库的编码可以很大程度上避免倒入导出带来的乱码问...

    mysql教程网2122019-11-01
  • MysqlMySQL Workbench安装及使用详解

    MySQL Workbench安装及使用详解

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,这篇...

    一只爬爬虫7552022-11-25
  • Mysqlmysql5.7安装及配置教程

    mysql5.7安装及配置教程

    这篇文章主要为大家详细介绍了mysql5.7安装及配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    snow_15962020-08-21
  • MysqlMySQL学习笔记2:数据库的基本操作(创建删除查看)

    MySQL学习笔记2:数据库的基本操作(创建删除查看)

    我们所安装的MySQL说白了是一个数据库的管理工具,真正有价值的东西在于数据关系型数据库的数据是以表的形式存在的,N个表汇总在一起就成了一个数据...

    MYSQL教程网3772019-12-15
  • MysqlMySQL常见的底层优化操作教程及相关建议

    MySQL常见的底层优化操作教程及相关建议

    这篇文章主要介绍了MySQL常见的底层优化操作教程及相关建议,包括对运行操作系统的硬件方面及存储引擎参数的调整等零碎方面的小整理,需要的朋友可以参...

    服务器之家2212020-05-26