【问题标题】:how to get next/previous records in mysql based on timestamp如何根据时间戳获取mysql中的下一条/上一条记录
【发布时间】:2013-07-10 21:56:43
【问题描述】:

我想知道如何参考我当前选择的行从 mysql 数据库中选择下一行和上一行。

我在 SO How to get next/previous record in MySQL? 上发现了这个问题,但在这种情况下,选择是根据参考中的更高和更低 id 完成的。我想使用更早或更晚的时间戳而不是 id。

【问题讨论】:

  • "我想使用更早或更晚的时间戳而不是 id。" -- 所以你没有大致了解如何做到这一点?
  • 哦……不,我不知道……请您指出正确的方向吗?
  • 从您引用的问题中,您是否尝试过select * from foo where sometimestamp = (select min(sometimestamp) from foo where sometimestamp > ?),其中? 是一些输入?

标签: php mysql


【解决方案1】:

没有理由使用子查询。

下一步:

SELECT * FROM `my_table`
WHERE `the_timestamp` > 123456
ORDER BY `the_timestamp` ASC
LIMIT 1

上一篇:

SELECT * FROM `my_table`
WHERE `the_timestamp` < 123456
ORDER BY `the_timestamp` DESC
LIMIT 1

【讨论】:

  • @Vyren Media:如果您只想检索一条记录,请选择此答案。当表中的每个时间戳都是唯一的时,这非常有用。但是,如果您的应用程序中可能有几行具有相同的时间戳,我对这个问题的回答将全部检索它们——或者您可以交替将字段或计算添加到@987654323 中提供的代码@Hast @ 子句,这样当返回一条记录时,它是通过适当的逻辑完成的,而不仅仅是时间戳之后的插入顺序。
【解决方案2】:

根据您链接到的文章,您可以使用:

SELECT *
FROM `my_table`
WHERE `the_timestamp` = (
    SELECT MIN(`the_timestamp`)
    FROM `my_table`
    WHERE `the_timestamp` > 1373493634
);

它的格式是为了便于阅读。将我使用的时间戳(1373493634)替换为您想要在之后查找下一条记录的时间戳。

【讨论】:

    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    相关资源
    最近更新 更多