【发布时间】:2022-01-19 14:16:05
【问题描述】:
如何获取最大创建日期的行数?
示例数据:
id|code|transaction_date |amount|record_status|creation_date
1 |0001|2021-12-10 00:00:00| 10.00|D |2021-12-10 00:00:00
2 |0001|2021-12-10 00:00:00| 10.00|D |2021-12-11 10:00:00
3 |0002|2021-12-11 00:00:00| 10.00|D |2021-12-11 00:00:00
4 |0002|2021-12-11 00:00:00| 10.00|D |2021-12-12 10:00:00
我想得到这个:
id|code|transaction_date |amount|record_status|creation_date
2 |0001|2021-12-10 00:00:00| 10.00|D |2021-12-11 10:00:00
4 |0002|2021-12-11 00:00:00| 10.00|D |2021-12-12 10:00:00
我正在尝试这个
SELECT * FROM table1
WHERE (SELECT max(creation_date) from table1 WHERE DATE(transaction_date) = '2021-12-10')
AND record_status = 'D';
但我无法选择我想要的日期范围IN ('2021-12-10', 2021-12-11')
【问题讨论】:
-
您使用的是哪个 MySQL 版本?
-
我用的是mysql 5
-
(code,creation_date)是否被定义为唯一的?如果不是,那么在多行包含相同的最大creation_date的情况下,您需要什么输出? -
您是否在每个代码的最大创建日期之后?如果是这样,
Lateral是您要查找的表函数:stackoverflow.com/questions/36869221/cross-outer-apply-in-mysql 或带有限制或分析的协同子查询。这也可以通过为代码排序的每个分区分配一个行号来实现,按创建日期降序排列,然后在外部查询中由行号 1 限制。任君挑选……每部作品都有相似的表现;并且根据数据/结构,有些会稍微快一些。