首页 > 解决方案 > MySQL 返回特定日期

问题描述

我有一个充满视频和视频帖子 ID 的表格。有些具有相同的标题,但在几天后重新发布,如屏幕截图所示。因此,同一个视频有不同的Id。如果我需要在每个标题的原始创建日期的 7 天内检索视图,无论已进行多少次转发,我如何排除额外的天数,例如我的帖子中的最后 3 行?由于创建日期是 1 月 5 日,在这种情况下,我只想要 1 月 6 日、7 日、8 日、9 日、10 日、11 日和 12 日的视图。不包括 1 月 5 日的原因是因为视频通常在创建日期后一天发布。

在某些情况下,我可能会在原始创建日期后的 7 天内转发 3 次。此示例仅对同一视频进行了 1 次转发。

截屏

标签: mysqlsqlgreatest-n-per-group

解决方案


如果您使用的是 MySQL 8.0,您可以min()为此创建一个窗口:

select *
from (
    select t.*, min(creation_date) over(partition by title) first_creation_date
    from mytable t
) t
where total_days <= first_creation_date + interval 7 days

在早期版本中,您可以使用相关子查询:

select t.*
from mytable t
where total_days <= (
    select min(creation_date) + interval 7 days
    from mytable t1
    where t1.title = t.title
)

推荐阅读