mysql分组并查询最新记录信息(亲测有效)
场景描述:APP提供用户留存信息入口,后台运营人员会对留存的用户信息进行多次回访记录,现查询出所有的用户留存信息,每条留存信息中关联查询最新的一条回访记录信息。
表结构:
user_apply–用户线上信息留存表(主键为ID),manage_apply_record用于对每条留存信息进行多条回访记录(manage_apply_record中user_apply_id为user_apply主键ID)。两表为一对多关系。
查询方式:使用group by进行分组,最新的记录可以认为是ID值最大的。然后与回访记录表进行关联。
SELECT user_apply.`name`,user_apply_record.`content` FROM user_apply
LEFT JOIN (SELECT id,manage_apply_id,oper_login FROM user_apply_record WHERE id IN (SELECT MAX(id) FROM user_apply_record GROUP BY manage_apply_id) ) t ON t.user_apply_id =user_apply.`id`
LEFT JOIN user_apply_record ON user_apply_record.`id`=t.`id`
场景补充(max不能查询最新记录的问题处理):
问题描述:查询每个会员卡最新的请假记录信息,其中包含请假的开始结束时间.按照上面的实现逻辑是先进行分组,然后使用max查询最大的id,就能查询出最新的请假记录信息,但是测试反馈出一个问题,显示的记录id是最大,但是请假开始和结束时间不是最新的.
问题卡号记录信息:三条请假记录,最后一次的请假记录时间应该是id为1233中4.28-5.03.原始记录如下:
但是按照之前的逻辑查询出来记录id是最大的,但是请假开始和结束时间不是最近的.
问题sql:
SELECT MAX(id),card_no,DATE_FORMAT(leave_start_time,'%Y-%m-%d') leave_start_time,DATE_FORMAT(leave_end_time,'%Y-%m-%d') leave_end_time FROM staff_card_record GROUP BY card_no ORDER BY leave_start_time DESC
处理方案:请假开始和结束时间都按照最大进行查询.
修改后sql:
SELECT MAX(id),card_no,DATE_FORMAT(MAX(leave_start_time),'%Y-%m-%d') leave_start_time,DATE_FORMAT(MAX(leave_end_time),'%Y-%m-%d') leave_end_time FROM staff_card_record GROUP BY card_no ORDER BY leave_start_time DESC
查询结果:
符合要求,问题解决!
mysql分组并查询最新记录信息(亲测有效)相关推荐
- MySQL 分组后取最新记录
业务场景: 取一张表里面最新的一条数据,以最新的一条数据为基准进行相关业务操作. 创建我们需要的测试表 create table my_test (id int auto_incrementprima ...
- 【最新】【亲测有效】sublime 安装 emmet 失败的解决方法
[最新][亲测有效]sublime 安装 emmet 失败的解决方法 写在前面 可能的原因 解决办法 步骤一 步骤二 写在前面 今天新电脑安装了一个最新的 sublime text 3,然后打算安装我 ...
- mysql数据库补充知识3 查询数据库记录信息之多表查询
一 介绍 准备表 company.employee company.department 复制代码#建表 create table department( id int, name varchar(2 ...
- 【技巧】MySql 分组Group 查询 用|隔开 取分组后的其他字段
[技巧]MySql 分组 查询 用|隔开 GROUP_CONCAT( t.id SEPARATOR '|' ) 如果你的字段字节数据较多,则可以使用如下语句来设置group_concat的最大字节数: ...
- mysql分组查询和子查询语句_6.MySQL分组聚合查询,子查询
自己的MySQL阅读笔记,持续更新,直到看书结束. 数据库技术可以有效帮助一个组织或者企业科学.有效的管理数据,也是现在很多企业招聘数据分析师的必备要求之一. 大家如果看过MySQL的书,也可以看我的 ...
- Ubuntu18.04安装Anaconda(最新最全亲测图文并茂)
文章目录 前言 一.Anaconda版本的选择 二.Anaconda安装步骤 1.下载anaconda 2.安装 Anaconda 3. 检验anaconda安装成功 三.安装常见问题 四.换源 五. ...
- mysql 分组联合查询_【MySQL】-2 函数、分组、子查询、联合查询
函数 Mysql的函数特性没有SQL可移植性强. 大多数情况下支持的函数: 处理文本串的函数: RTrim():处理列值右边的空格 LTrim():处理列值左边的空格 Trim():处理列值的左右两边 ...
- mysql分组取日期最大的记录_mysql 分组 group by, 排序 取每条记录中,时间最大
mysql教程 分组 group by, 排序 取每条记录中,时间最大的一条记录 select a.* from test a, (select aid, max(day) max_day from ...
- 如何在MySQL官网查看最新版本信息
浏览器地址框输入:https://dev.mysql.com/ 选择主页中的documentation 查看Current Release Notes 根据最新发行说明,看到当前的版本信息: 查看Al ...
最新文章
- 影像组学视频学习笔记(29)-ICC的计算、Li‘s have a solution and plan.
- msys2 config.guess: unable to guess system type
- mapreduce原理
- 牛客网(剑指offer) 第十四题 链表中倒数第k个节点
- 工程搭建:搭建子工程之分布式id生成器
- Python subprocess.Popen 实时输出 stdout(正确管道写法)
- YY的GCD(洛谷-P2257)
- 轻量级日志系统Loki原理简介和使用
- 【干货】2021中国“企服企业”规模化获客体系建设指南.pdf(附下载链接)
- ARMv8体系结构基础05:比较和跳转指令
- SQLite 之 C#版 System.Data.SQLite 使用
- 生鲜电商进入2.0时代,美团还有“后招”吗?
- HitPaw Screen Recorder(电脑屏幕录制软件)官方中文版V2.0.1.6 | 含直播和微课制作功能 | 电脑屏幕录制软件哪个好用?
- 图层重命名快捷键_实际操作,在PS中如何批量给图层重命名并导出
- Idea 破解版下载指南
- JavaWeb学习(较全较简)
- excel如何去重统计户数_excel表格单一数据统计-Excel如何去重,然后统计数据?...
- burpsuite之CSRF测试
- 客户画像赋能百度推广生态实践
- vulnhub:inferno-1.1