• mysql取出组内按照某时间最新一条数据的其他字段


    注,仅适用于MYSQL8以上,不然无法使用窗口函数

    示例数据如下:

    lot_idfile_namefile_timetype
    1362911113629111_20231101_165326.csv2023-11-01 16:53:181
    1362911113629111_20231110_095855.csv2023-11-10 09:58:312
    1362911113629111_20231110_084255.csv2023-11-10 08:41:562
    1362911113629111_20231110_093731.csv2023-11-10 08:41:562
    12341234_20231102_134030.csv2023-11-02 13:40:211
    12341234_20231102_171750.csv2023-11-02 17:17:311
    12341234_20231106_122026.csv2023-11-06 12:18:362

    若想取出数据,按lot_id和type分组,依据file_time最新的那条数据,获取到file_name. 即取出如下数据

    lot_idfile_namefile_timetype
    12341234_20231102_171750.csv2023-11-02 17:17:001
    12341234_20231106_122026.csv2023-11-06 12:18:002
    1362911113629111_20231101_165326.csv2023-11-01 16:53:001
    1362911113629111_20231110_095855.csv2023-11-10 09:58:002

    可使用如下sql完成

    -- 首先按照需求排序记得行号
    select lot_id,file_name,file_time,`type`,
    ROW_NUMBER() over(PARTITION BY lot_id,`type` order by file_time desc) as `rank` FROM test;
    
    -- 完整sql,取出行号为1的数据,即最新的数据
    select * from 
    (
    select lot_id,file_name,file_time,`type`,
    ROW_NUMBER() over(PARTITION BY lot_id,`type` order by file_time desc) as `rank` FROM test
    )a where a.`rank` = 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    其中

    • PARTITION BY lot_id,type. 语法类似与group by,指定分组要求.
    • order by file_time desc即指定组内按什么排序.
    • ROW_NUMBER()为窗口函数,记为组内的行号
      注意:窗口函数不会改变原有的数据行数,可以认为是查看分析数据的一种方式,即在原数据上加上一列

    上半句片段执行结果如下,rank表示按照需求的排序情况

    lot_idfile_namefile_timetyperank
    1362911113629111_20231101_165326.csv2023-11-01 16:53:1811
    1362911113629111_20231110_095855.csv2023-11-10 09:58:3121
    1362911113629111_20231110_084255.csv2023-11-10 08:41:5622
    1362911113629111_20231110_093731.csv2023-11-10 08:41:5623
    12341234_20231102_134030.csv2023-11-02 13:40:2112
    12341234_20231102_171750.csv2023-11-02 17:17:3111
    12341234_20231106_122026.csv2023-11-06 12:18:3621
  • 相关阅读:
    Kotlin 1.5新特性记录
    springboot mybatis多数据源配置
    BiliBili 阴阳师主题 前端技术展示
    迅为RK3399Qt 实时时钟测试
    2008-2020年数据上市公司高管团队异质性数据包含Stata代码
    FasterRCNN入门案例水稻图像目标检测新手友好入门案例
    黄菊华老师,Java Servlet毕业设计毕设辅导课(4):Servlet 实例
    fastjson(1.2.24-rce)
    Interactron | 体现自适应的目标检测器
    dubbo接口自动化用例性能优化
  • 原文地址:https://blog.csdn.net/qq_37293230/article/details/134438806