mysql实现查询分组查询最后一次的记录

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql实现查询分组查询最后一次的记录

前言


今天在项目上遇到了个需求,是这样的:我们数据库中有一表检测记录表,该表中存储的是所有居民每次的检测记录,说白点就是,张三在今天检测了两次心电,那么该表中就会有两条记录,如果李四在今天检测了4次,那么表中就存的是4次的记录。如下所示:

46836c6e8e604d0b8cd1f2290c3d2841.png

像这样的检测记录表有9个,现在我们要实现,查询每个表中所有居民的最后一次检测记录。


sql语句

需求:查询所有居民的最后一次检测记录,包括居民信息,那么我们可以做出如下分析:


  1.    检测记录表需要和居民表进行关联查询,因为我们需要拿到居民的信息,在检测记录表中只有居民的id


  1.    在检测记录表中,需要按照居民分组查询,因为同一居民可能测多次,在表中存储的就是多次的记录。


  1.    需要按照检测时间降序排序检测记录表中的数据,因为我们需要知道最后一次的检测时间。



综上所述,我们就可以慢慢的整理出以下的sql,如下所示:

SELECT
    lm.name AS NAME,
    T1.heartratenum AS heartratenum,
    T1.ai_remark AS ai_remark,
    T1.dr_remark AS dr_remark,
    T1.create_time AS create_time,
    T1.user_id AS user_id,
    T1.member_id AS member_id,
    T1.sys_org_code AS sys_org_code,
    lm.birthday AS birthday,
    lm.sex AS sex,
    lm.phone AS phone,
    DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), lm.birthday)), '%Y')+0 AS age
FROM (SELECT A.* 
      FROM(SELECT A.*,
                  @row_number := IF(@member_id = A.member_id OR @member_id IS NULL,@row_number + 1,1) AS RN,
                  @member_id := A.member_id AS member_id1
           FROM lt_ecg A,(SELECT @row_number := 0) B,(SELECT @member_id := NULL) C
           ORDER BY A.member_id,A.measure_time DESC) A
   WHERE A.RN = 1) T1
INNER JOIN lt_member lm
   ON T1.member_id = lm.id


这样查出来如下所示:

dc71dd0c80b444b89ae5c51bcd98f686.png

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4天前
|
存储 算法 关系型数据库
MySQL怎样处理排序⭐️如何优化需要排序的查询?
MySQL怎样处理排序⭐️如何优化需要排序的查询?
|
4天前
|
SQL 关系型数据库 MySQL
MySQL数据库的约束+进阶版新增与查询-2
MySQL数据库的约束+进阶版新增与查询
12 1
|
4天前
|
关系型数据库 MySQL 测试技术
MySQL数据库的约束+进阶版新增与查询-1
MySQL数据库的约束+进阶版新增与查询
15 1
|
4天前
|
SQL 存储 关系型数据库
MySQL查询原理,看这一篇就够了!
MySQL查询原理,看这一篇就够了!
|
7天前
|
SQL 关系型数据库 MySQL
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
|
3天前
|
关系型数据库 MySQL 数据库
docker MySQL删除数据库时的错误(errno: 39)
docker MySQL删除数据库时的错误(errno: 39)
11 0
|
1天前
|
关系型数据库 MySQL 数据库
mysql 设置环境变量与未设置环境变量连接数据库的区别
设置与未设置MySQL环境变量在连接数据库时主要区别在于命令输入方式和系统便捷性。设置环境变量后,可直接使用`mysql -u 用户名 -p`命令连接,而无需指定完整路径,提升便利性和灵活性。未设置时,需输入完整路径如`C:\Program Files\MySQL\...`,操作繁琐且易错。为提高效率和减少错误,推荐安装后设置环境变量。[查看视频讲解](https://www.bilibili.com/video/BV1vH4y137HC/)。
17 3
mysql 设置环境变量与未设置环境变量连接数据库的区别
|
3天前
|
关系型数据库 MySQL 数据库连接
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
用Navicat备份Mysql演示系统数据库的时候出:Too Many Connections
13 0
|
5天前
|
存储 Oracle 关系型数据库
oracle 数据库 迁移 mysql数据库
将 Oracle 数据库迁移到 MySQL 是一项复杂的任务,因为这两种数据库管理系统具有不同的架构、语法和功能。
15 0
|
12天前
|
关系型数据库 MySQL Linux
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)
【MySQL-10】数据库函数-案例演示【字符串/数值/日期/流程控制函数】(代码演示&可cv代码)