php - 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
你能帮我吗?谢谢!
解决方案
我想你可以用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
,考虑到您问题中的数据,这是一个合理的假设。
推荐阅读
- sql - 在存储过程中动态添加表名
- arduino - Arduino Nano 不上传草图:没有显示错误信息
- angular - 带有重试的mergeMap当从它失败的点运行重试时,没有重新开始
- javascript - 类型错误:text.value 未定义
- javascript - 如何在反应中清除动态形式的输入值
- typescript - jest+jsdom:测试失败,TypeError 参数 1 不是“事件”类型
- html - 从另一个组件调用方法以保持数据同步
- memory-management - 如何在默认构造函数上使用智能指针
- c# - 创建 Cron 作业以在 x 小时后运行
- windows - 我是否需要同时为 Windows 10 和 WSL 安装 Git?