mysql 分组按时间取最大_mysql 分组group by排序取每条记录中,时间最大的一条记录...

本文介绍了mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录的实现方法,有需要的朋友可以参考一席。

以下是 test 表,测试sql

CREATE TABLE IF NOT EXISTS `test` (

CREATE TABLE IF NOT EXISTS `test` (

`id` int(10) unsigned NOT NULL auto_increment,

`install` int(10) unsigned NOT NULL,

`day` int(10) unsigned NOT NULL,

`aid` int(10) unsigned NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

INSERT INTO `test` (`id`, `install`, `day`, `aid`) VALUES

(1, 1232, 20080808, 1),

(2, 2321, 20080809, 2),

(3, 1236, 20080810, 3),

(5, 4212, 20080809, 1),

(6, 2312, 20080810, 1),

(7, 1432, 20080811, 1),

(8, 2421, 20080808, 2),

(9, 4245, 20080811, 2),

(10, 5654, 20080810, 2),

(11

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过Mybatis Plus的Lambda QueryWrapper和子查询来实现分组后查询每组最新一条数据的功能。具体实现步骤如下: 1. 构建Lambda QueryWrapper对象,设置分组条件和排序条件: ``` QueryWrapper<Entity> wrapper = new QueryWrapper<>(); wrapper.select("group_id", "max(create_time) as create_time") .groupBy("group_id") .orderByDesc("create_time"); ``` 2. 构建子查询,查询每组最新一条数据的id: ``` QueryWrapper<Entity> subWrapper = new QueryWrapper<>(); subWrapper.select("id") .inSql("concat(group_id, '_', create_time)", "select concat(group_id, '_', max(create_time)) from entity group by group_id"); ``` 3. 根据子查询构建Lambda QueryWrapper对象,查询每组最新一条数据的详细信息: ``` QueryWrapper<Entity> queryWrapper = new QueryWrapper<>(); queryWrapper.in("id", subWrapper); List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 其,第1步的select语句group_id为分组字段,create_time为时间字段,max(create_time)表示获每组最新的一条数据的时间。orderByDesc("create_time")表示按时间倒序排列,确保每组最新的一条数据排在最前面。 第2步的子查询,concat(group_id, '_', create_time)表示将group_id和create_time拼接成一个字符串,以便后面使用inSql函数查询。 第3步的in函数,将子查询的结果作为参数传入,查询每组最新的一条数据的详细信息。 这样就可以实现分组后查询每组最新一条数据的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值