【发布时间】:2021-05-08 02:27:17
【问题描述】:
我将尝试通过示例来解释我想在 MySQL 中实现什么。
我有一张这样的表:
pricelist_id valid_from
1 1610665200000 //15 Jan 2021
2 1610751600000 //16 Jan 2021
3 1610838000000 //17 Jan 2021
valid_from 列中的值本质上是通过以下 Java 代码在某个时间点生成的字符串值:
String.valueOf(System.currentTimeMillis())
我的任务是传递任何字符串值(以数字的格式,在本例中为long),以与上述相同的方式生成,我需要提取属于第一个较小的单个pricelist_id或表中valid_from 的相等值,与valid_from 的传递值相比。很难用语言来解释(而且我的英语很糟糕),所以我来演示一下。
如果我传递一个代表Jan 18th、1610924400000 的值,我需要获得单个pricelist_id 值,在本例中为3。
如果我传递一个代表Jan 16th 17:15:00、1610813700000 的值,我需要获取单个pricelist_id 值,在本例中为2。
如果我传递一个代表Jan 25th、1611529200000 的值,我需要获得单个pricelist_id 值,在本例中为3。
到目前为止,我所拥有的是:
select max(p.pricelist_id)
from pricelist p
where (p.valid_from + 0) <= some_passed_value
order by p.valid_from, p.pricelist_id desc
【问题讨论】:
标签: mysql sql database groupwise-maximum