sql - SQL - 选择唯一行且超过 4 小时
问题描述
我正在尝试选择所有超过 4 小时的行,只有唯一的行,并将它们限制为 250 行。
我的数据库如下所示:
id | titleid | version | timestamp
1 | TEST1 | 1.00 | 2019-03-23 02:40:33
2 | TEST1 | 1.01 | 2019-03-23 02:40:33
3 | TEST1 | 1.02 | 2019-03-23 02:40:33
4 | TEST2 | 1.50 | 2019-03-23 02:40:33
5 | TEST2 | 1.51 | 2019-03-23 02:40:33
我有这个查询:
SELECT m1.*
FROM patch_queue m1
LEFT JOIN patch_queue m2 ON (m1.titleid = m2.titleid AND m1.id < m2.id)
WHERE timestamp <= DATE_SUB(NOW(), INTERVAL 4 HOUR) AND m2.id IS NULL
LIMIT 250
哪个应该可以解决问题。我只是不确定如何将它组合成一个。它抛出:
where 子句中的列“时间戳”不明确
有谁碰巧知道我该怎么做?
期望的结果:
id | titleid | version | timestamp // they're all older than 4 hours in this case
3 | TEST1 | 1.02 | 2019-03-23 02:40:33
5 | TEST2 | 1.51 | 2019-03-23 02:40:33
解决方案
我假设您希望每 1 行titleid
,其中titleid
4 小时内没有记录:
select t.*
from t
where t.timestamp = (select max(t2.timestamp)
from t t2
where t2.titleid = t.titleid
) and
t.timestamp < now() - interval 4 hour
order by timestamp desc
limit 250;
推荐阅读
- c# - 通过菜单按钮删除 RadGridView 中的行
- android - 清单文件问题
- oracle - 使用 oracle PLSQL Bulk collect with limit 子句将整个数据收集到集合中
- .net - 是否可以在支持 Linq 到 SQL 转换的同时扩展 String 类?
- javascript - Laravel 从表单数据中保存图像
- ios - 获取单个数组项
- java - 更快的方法来打破循环或增加计数器?
- c# - UWP 按钮未正确重绘
- python - Scrapy Spider 在处理中出现错误
- php - 在 mysql 中,如何使用附加过滤器获取基于 php 数组的数据?