首页 > 解决方案 > mysql查询组按相同的重复日期时间

问题描述

我在进行查询时遇到问题。我有一张表,其中有一些重复日期时间的记录。我必须从日期时间重复的地方带上最后一个。例子:

ID 价值 约会时间
1 1 2021-01-03 08:30:00
2 1 2021-01-03 08:30:00
3 3 2021-01-03 08:30:00
4 0 2021-01-03 08:30:10
5 4 2021-01-03 08:30:20
6 8 2021-01-03 08:30:20
7 0 2021-01-03 08:30:20

它应该返回 id 3,4 和 7

你能帮我吗?谢谢!

标签: phpmysqlsql

解决方案


我想你可以用lead()这个。根据您的问题,它将是:

select t.*
from (select t.*, 
             lead(datetime) over (order by id) as next_datetime
      from t
     ) t
where next_datetime is null or next_datetime <> datetime;

根据您的样本数据,存在某种未指定的阈值。所以,像这样:

select t.*
from (select t.*, 
             lead(datetime) over (order by id) as next_datetime
      from t
     ) t
where next_datetime is null or
      next_datetime < datetime + interval 11 second;

注意:这假设datetime值随着 增加id,考虑到您问题中的数据,这是一个合理的假设。


推荐阅读