我有一個功能可以獲取特定ID的記錄,並有兩個鏈接供上一個和下一個記錄使用。現在我有單獨的查詢來獲取下一個ID:獲取查詢ID前面的ID並繼續查詢
$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1";
$ getId是當前的ID。
有沒有辦法整合成一個查詢?
我有一個功能可以獲取特定ID的記錄,並有兩個鏈接供上一個和下一個記錄使用。現在我有單獨的查詢來獲取下一個ID:獲取查詢ID前面的ID並繼續查詢
$query = "SELECT id FROM presentations WHERE id > '$getId' ORDER BY id ASC LIMIT 1";
$ getId是當前的ID。
有沒有辦法整合成一個查詢?
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列:previd
和nextid
周圍$的getId
從技術上講,現在有3個查詢,但我看不出任何其他方式做這個體面。所以,+1 – 2011-03-07 17:09:17
注意編輯 - 我錯過了第一個'ORDER BY'中的'DESC'修飾符 – 2011-03-07 17:13:15
我認爲你可以使用內部查詢
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
第一陣列結果將是此前的紀錄,第二次將是您當前記錄,最後將是你的最後一個記錄。
他們總是會按順序嗎?如果不需要單獨的關係表來輕鬆訪問prev/next。 – 2011-03-07 16:59:13