繁体   English   中英

如何查询数据库中字段时间戳值最近的所有行?

[英]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

您可能会在这里找到其他几种解决方案。 我建议您比较各种解决方案,并使用性能最好的解决方案。

DEMO

如果我理解正确,那么您将:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM