2013-07-10 61 views
1

我想知道如何從mysql數據庫中選擇參考當前選定行的下一行和前一行。如何根據時間戳獲取mysql中的下一個/上一個記錄

我在SO How to get next/previous record in MySQL?上發現了這個問題,但在這種情況下,select是根據參考中較高和較低的id完成的。我想使用更早或更晚的時間戳而不是id。

+1

「我想更早或更晚時間戳記使用的ID來代替。」 - 所以你沒有得到如何做到這一點的一般想法? – zerkms

+0

噢......不,我nt ....請你能指出我在正確的方向嗎? – jcobhams

+1

從你引用的問題中,你嘗試過'select * from foo where sometimestamp =(從foo選擇min(sometimestamp)where somestamp>?)',其中'?'是一些輸入? – Ryan

回答

7

沒有理由使用子查詢。

下一頁:

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 
+0

@Vyren Media:如果您只想找回一條記錄,請使用此答案。這對於表格中的每個時間戳都是唯一的很有用。但是,如果在應用程序中可能有多行具有相同的時間戳,那麼我對這個問題的回答將全部檢索它們 - 或者可以將字段或計算交替添加到'ORDER中提供的代碼@Hast中BY'子句,以便在返回一條記錄時,它通過適當的邏輯完成,而不僅僅是時間戳後的插入順序。 – Anton

+0

工作完美...非常感謝..真的很感激它。 :) – jcobhams

0

根據您鏈接到這篇文章,你可以使用:

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

它格式化的可讀性。將我使用的時間戳(1373493634)替換爲您想要查找下一條記錄的時間戳。

相關問題