MySQL Return 具体日期
MySQL Return Specific Dates
我有一个 Table 完整的视频和视频 Post ID。有些具有相同的标题,但如屏幕截图所示,几天后重新post。因此,同一个视频有不同的Id。如果我需要在每个标题的原始创建日期后 7 天内检索视图,无论已经制作了多少次 post,我如何排除额外的天数,例如 post 中的最后 3 行?由于创建日期是 1 月 5 日,因此在本例中我只需要 1 月 6 日、7 日、8 日、9 日、10 日、11 日和 12 日的视图。 1 月 5 日不包括在内的原因是视频通常在创建日期后一天 post 编辑。
在某些情况下,我可能在原始创建日期后的 7 天内有 3 个 post。此示例对于同一视频只有 1 个 repost。
如果您使用的是 MySQL 8.0,您可以为此执行 window 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
)
我有一个 Table 完整的视频和视频 Post ID。有些具有相同的标题,但如屏幕截图所示,几天后重新post。因此,同一个视频有不同的Id。如果我需要在每个标题的原始创建日期后 7 天内检索视图,无论已经制作了多少次 post,我如何排除额外的天数,例如 post 中的最后 3 行?由于创建日期是 1 月 5 日,因此在本例中我只需要 1 月 6 日、7 日、8 日、9 日、10 日、11 日和 12 日的视图。 1 月 5 日不包括在内的原因是视频通常在创建日期后一天 post 编辑。
在某些情况下,我可能在原始创建日期后的 7 天内有 3 个 post。此示例对于同一视频只有 1 个 repost。
如果您使用的是 MySQL 8.0,您可以为此执行 window 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
)