2012-02-03 173 views
0

後,我有一個包含以下兩個字段一個MySQL表(還有其他的,但他們無關)選擇記錄ID

creation_time | object_id 
1325384907 | 75b31b2c-78e9-46b9-afc8-6d90c0df2ee6 
1325388538 | c87734c9-5109-4956-a1cb-7e719ebb4549 
1325430911 | 79fe7f41-4a73-4aa3-b1e4-68be0253d9ab 
[...] 

我希望做的是從表中,通過有序的選擇時間,在一定OBJECT_ID

所以那種我想要的東西畢竟對象是像

SELECT * FROM MYTABLE ORDER BY creation_time ASC WHERE object_id > 'c87734c9-5109-4956-a1cb-7e719ebb4549' 

查詢應返回1325430911 | 79fe7f41-4a73-4aa3-b1e4-68be0253d9ab(作爲次之後的下一個記錄在對象ID處)。

這是一個尋呼系統(I.E.''get results after'),我們唯一的信息是uuid,所以我們不能只選擇creation_time > x

回答

2
SELECT * FROM MYTABLE 
WHERE CREATION_TIME > (SELECT CREATION_TIME FROM MYTABLE WHERE OBJECTID='YOUR_OBJECT_ID_THAT_YOU_REALLY_KNOW' LIMIT 1) 
ORDER BY CREATION_TIME ASC 

請注意LIMIT 1,因爲如果子查詢返回比1分的結果更多,查詢將失敗

+0

您需要嗎?理解你的問題真的很複雜。請如果不是這樣,請添加評論,我會很高興編輯我的答案。謝謝。 – 2012-02-03 14:40:43

0
SELECT Creation_Time, Object_ID 
FROM `tableName` 
WHERE Creation_Time > 
     (SELECT Creation_Time 
     FROM `tableName` 
     WHERE Object_ID = 'idhere') 
ORDER BY Creation_Time 
+0

請注意此答案,如果子查詢返回多於1個結果,則查詢將失敗。此外,用戶需要通過ASC進行排序,默認情況下,mysql是DESC。 – 2012-02-03 14:46:07

+1

@Leandro:如果我沒有完全錯誤,那麼在所有SQL產品中默認爲'ASC'。 – 2012-02-03 14:52:46

+0

Doh!我很慚愧,我沒有想到這個=( – Smudge 2012-02-03 14:52:52