2011-03-07 109 views
0

我有一個功能可以獲取特定ID的記錄,並有兩個鏈接供上一個和下一個記錄使用。現在我有單獨的查詢來獲取下一個ID:獲取查詢ID前面的ID並繼續查詢

$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1"; 

$ getId是當前的ID。

有沒有辦法整合成一個查詢?

+0

他們總是會按順序嗎?如果不需要單獨的關係表來輕鬆訪問prev/next。 – 2011-03-07 16:59:13

回答

2
SELECT A.id AS previd, B.id AS nextid 
FROM 
    (SELECT id FROM presentations WHERE id < '$getId' ORDER BY id DESC LIMIT 1) A, 
    (SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1) B 

返回2列:previdnextid周圍$的getId

+0

從技術上講,現在有3個查詢,但我看不出任何其他方式做這個體面。所以,+1 – 2011-03-07 17:09:17

+0

注意編輯 - 我錯過了第一個'ORDER BY'中的'DESC'修飾符 – 2011-03-07 17:13:15

0

我認爲你可以使用內部查詢

SELECT id FROM presentations 
WHERE id >= (SELECT id FROM presentations WHERE id < '$getId' ORDER BY id DESC LIMIT 0 , 1) 
ORDER BY id ASC LIMIT 0 , 3 

第一陣列結果將是此前的紀錄,第二次將是您當前記錄,最後將是你的最後一個記錄。