仅显示每天的最新日期记录
Posted
技术标签:
【中文标题】仅显示每天的最新日期记录【英文标题】:show only latest date record for each day 【发布时间】:2020-08-03 21:46:52 【问题描述】:我有一张如下表
ID apiDate totalCases
1 2020-04-18 12:00:00 10
2 2020-04-18 12:00:00 15
3 2020-04-19 12:00:00 20
4 2020-04-19 12:00:00 25
5 2020-04-19 12:00:00 30
6 2020-04-20 12:00:00 35
7 2020-04-20 12:00:00 40
8 2020-04-20 12:00:00 45
我想返回每天的最新记录如下
ID apiDate totalCases
2 2020-04-18 12:00:00 15
5 2020-04-19 12:00:00 30
8 2020-04-20 12:00:00 45
我添加了另一个名为“dateonly”的列并达到了我的要求
SELECT
*
FROM
myTable H
WHERE
`apiDate` =
(
SELECT
max(`apiDate`)
FROM
myTable
WHERE
`dateonly` = H.dateonly
)
我正在寻找不添加列“dateonly”的适当解决方案
【问题讨论】:
【参考方案1】:你考虑过窗口功能吗?
select ID, apiDate, totalCases
from (select t.*,
row_number() over (partition by date(apidate) order by apidate desc) as seqnum
from mytable t
) t
where seqnum = 1;
【讨论】:
【参考方案2】:您使用相关子查询进行过滤的解决方案几乎就在那里。您只需要修复相关性子句,使其匹配当天而不是整个日期和时间。
我会这样写:
select t.*
from mytable t
where t.apidate = (
select max(t1.apidate)
from mytable t1
where t1.apidate >= date(t.apidate) and t1.apidate < date(t.apidate) + interval 1 day
)
【讨论】:
以上是关于仅显示每天的最新日期记录的主要内容,如果未能解决你的问题,请参考以下文章