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

大家好,我是雄雄。

在这里插入图片描述

前言

又好久没有写博客了,为什么呢?因为最近没怎么写代码…说起来也惭愧。

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

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

sql语句

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

  1. 检测记录表需要和居民表进行关联查询,因为我们需要拿到居民的信息,在检测记录表中只有居民的id
  2. 在检测记录表中,需要按照居民分组查询,因为同一居民可能测多次,在表中存储的就是多次的记录。
  3. 需要按照检测时间降序排序检测记录表中的数据,因为我们需要知道最后一次的检测时间。

综上所述,我们就可以慢慢的整理出以下的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


这样查出来如下所示:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆雄雄

哎,貌似还没开张来着呢~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值