[英]How do I query my database for all rows where the timestamp value of a field is the most recent?
我有一个经常填充一堆行的数据库,这些行中有一个名为“ catalogue_time”的字段,这是我填充数据库的其他程序开始新例程的时间戳。 因此,该程序将添加新行,所有行均具有相同的“ catalogue_time”字段。 我的问题是如何检索“ catalogue_time”中时间戳最近的所有行?
我试过了
SELECT * FROM threads ORDER BY catalogue_time DESC LIMIT 1
这样就给了我最新的记录,这与预期的一样,我可以获取上一个查询中的最新记录数,然后在此处使用它,但是我想知道是否有一种方法可以在一个查询中完成所有记录
DENSE_RANK()
可用于此目的。
SELECT * FROM
( select t.*, dense_rank() OVER ( ORDER BY catalogue_time DESC ) AS rnk
FROM threads t
) s WHERE rnk = 1
您可能会在这里找到其他几种解决方案。 我建议您比较各种解决方案,并使用性能最好的解决方案。
如果我理解正确,那么您将:
SELECT *
FROM threads
WHERE catalogue_time = (SELECT max(catalogue_time) FROM threads);
如果更多行都具有最新时间戳,则将返回更多行。
例如,您可以这样做:
SELECT * FROM threads
WHERE catalogue_time = (
SELECT catalogue_time ORDER BY catalogue_time DESC LIMIT 1
)
这对我有用
SELECT * FROM threads WHERE catalogue_time = (SELECT MAX(catalogue_time) FROM threads) ORDER BY catalogue_time
感谢大家
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.