场景描述: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分组并查询最新记录信息(亲测有效)相关推荐

  1. MySQL 分组后取最新记录

    业务场景: 取一张表里面最新的一条数据,以最新的一条数据为基准进行相关业务操作. 创建我们需要的测试表 create table my_test (id int auto_incrementprima ...

  2. 【最新】【亲测有效】sublime 安装 emmet 失败的解决方法

    [最新][亲测有效]sublime 安装 emmet 失败的解决方法 写在前面 可能的原因 解决办法 步骤一 步骤二 写在前面 今天新电脑安装了一个最新的 sublime text 3,然后打算安装我 ...

  3. mysql数据库补充知识3 查询数据库记录信息之多表查询

    一 介绍 准备表 company.employee company.department 复制代码#建表 create table department( id int, name varchar(2 ...

  4. 【技巧】MySql 分组Group 查询 用|隔开 取分组后的其他字段

    [技巧]MySql 分组 查询 用|隔开 GROUP_CONCAT( t.id SEPARATOR '|' ) 如果你的字段字节数据较多,则可以使用如下语句来设置group_concat的最大字节数: ...

  5. mysql分组查询和子查询语句_6.MySQL分组聚合查询,子查询

    自己的MySQL阅读笔记,持续更新,直到看书结束. 数据库技术可以有效帮助一个组织或者企业科学.有效的管理数据,也是现在很多企业招聘数据分析师的必备要求之一. 大家如果看过MySQL的书,也可以看我的 ...

  6. Ubuntu18.04安装Anaconda(最新最全亲测图文并茂)

    文章目录 前言 一.Anaconda版本的选择 二.Anaconda安装步骤 1.下载anaconda 2.安装 Anaconda 3. 检验anaconda安装成功 三.安装常见问题 四.换源 五. ...

  7. mysql 分组联合查询_【MySQL】-2 函数、分组、子查询、联合查询

    函数 Mysql的函数特性没有SQL可移植性强. 大多数情况下支持的函数: 处理文本串的函数: RTrim():处理列值右边的空格 LTrim():处理列值左边的空格 Trim():处理列值的左右两边 ...

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

    mysql教程 分组 group by, 排序 取每条记录中,时间最大的一条记录 select a.* from test a, (select aid, max(day) max_day from ...

  9. 如何在MySQL官网查看最新版本信息

    浏览器地址框输入:https://dev.mysql.com/ 选择主页中的documentation 查看Current Release Notes 根据最新发行说明,看到当前的版本信息: 查看Al ...

最新文章

  1. 影像组学视频学习笔记(29)-ICC的计算、Li‘s have a solution and plan.
  2. msys2 config.guess: unable to guess system type
  3. mapreduce原理
  4. 牛客网(剑指offer) 第十四题 链表中倒数第k个节点
  5. 工程搭建:搭建子工程之分布式id生成器
  6. Python subprocess.Popen 实时输出 stdout(正确管道写法)
  7. YY的GCD(洛谷-P2257)
  8. 轻量级日志系统Loki原理简介和使用
  9. 【干货】2021中国“企服企业”规模化获客体系建设指南.pdf(附下载链接)
  10. ARMv8体系结构基础05:比较和跳转指令
  11. SQLite 之 C#版 System.Data.SQLite 使用
  12. 生鲜电商进入2.0时代,美团还有“后招”吗?
  13. HitPaw Screen Recorder(电脑屏幕录制软件)官方中文版V2.0.1.6 | 含直播和微课制作功能 | 电脑屏幕录制软件哪个好用?
  14. 图层重命名快捷键_实际操作,在PS中如何批量给图层重命名并导出
  15. Idea 破解版下载指南
  16. JavaWeb学习(较全较简)
  17. excel如何去重统计户数_excel表格单一数据统计-Excel如何去重,然后统计数据?...
  18. burpsuite之CSRF测试
  19. 客户画像赋能百度推广生态实践
  20. vulnhub:inferno-1.1

热门文章

  1. Win10系统电脑鼠标左键不灵敏、有延迟怎么办
  2. 通信基础:星座图与IQ调制
  3. gif背景图html,CSS按钮及gif背景图片的运用
  4. 我跟敏捷开发的故事--三面墙
  5. java实现冒泡排序 (2012-05-23 10:18:22)
  6. kermit的安装、配置、使用
  7. 新建Flutter项目
  8. vs2010没有新建项目的解决方法
  9. 编程之美——1.2 中国象棋将帅问题(转)
  10. 监控页面所有 ajax请求