MYSQL中ID是无序的,但是需要通过指定的条件查询到最大的值的ID应该如何查询。

1、开发中遇到这个问题,下面直接通过mysql的方式讲解

select id, start_time, eva_id from a where eva_id = 1 order by start_time desc

执行查询出来的数据是这样的

2、解决方案

那么问题来了, 我只想获取到start_time 最大的那个ID,那有些人就说了, 我直接limit 1不就行了?

确实哈, 对于一个limit1的数据确实就可以了哈。

但是现在如果针对于不同的eva_id , 取每个不同的eva_id中start_time最大的id进行limit 1就不对了。看下面最终的SQL如下:

SELECT id, start_time, eva_id
FROM (
    SELECT id, start_time, eva_id,
           ROW_NUMBER() OVER (PARTITION BY eva_id ORDER BY start_time DESC) AS rn
    FROM a
) ranked
WHERE rn = 1 order by start_time desc

于是执行结果就是如下,这就达成了我们的目的:

3、函数解说

 

ROW_NUMBER() OVER (PARTITION BY eva_id ORDER BY start_time DESC)

这里面是 row_number()   是编排数字,给那些编排呢

 PARTITION BY eva_id   -- 通过eva_id这个字段进行分区

ORDER BY start_time DESC   -- 通过 最终start_time进行排序

WHERE rn = 1   -- 取编排里面的第一个数据

有不懂的小伙伴欢迎下方留言哈,欢迎随时交流。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 10:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 10:34:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 10:34:02       82 阅读
  4. Python语言-面向对象

    2024-04-24 10:34:02       91 阅读

热门阅读

  1. 用Python编写一个简单的数字累加器 数字累加器

    2024-04-24 10:34:02       30 阅读
  2. Linux CentOS 7 服务器集群硬件常用查看命令

    2024-04-24 10:34:02       31 阅读
  3. Quest 2 VR程序读取本地图片

    2024-04-24 10:34:02       27 阅读
  4. 标准化,信息化,数字化,智能化

    2024-04-24 10:34:02       37 阅读
  5. 在微信小程序部署AI模型的几种方法

    2024-04-24 10:34:02       27 阅读