mysql-如何獲取已知數據的前後筆資料呢?
比如我有一筆資料 id 是 99,而且是用欄位 createTime 排序,
我本來的做法是下面這樣
上一筆
SELECT *
FROM myTable
WHERE createTime < (SELECT createTime FROM myTable WHERE id = 99)
ORDER BY createTime DESC
LIMIT 1
下一筆
SELECT *
FROM myTable
WHERE createTime > (SELECT createTime FROM myTable WHERE id = 99)
ORDER BY createTime ASC
LIMIT 1
以上如果排序只有單純一種的話那都沒什麼問題,但我想要設定進階一點的排序時,
上面的方法就不適用了,例如變成下面這樣排序
SELECT *
FROM myTable
WHERE createTime > (SELECT createTime FROM myTable WHERE id = 99)
ORDER BY createTime ASC, birthday DES, id DESC
LIMIT 1
變成我抓出來上下筆的結果和 ORDER BY createTime ASC, birthday DES, id DESC 排出來的是不一樣了
請問各位大俠有解決方法嗎? 我已經想了一整天都研究不出來方法,
我有個想法是,不知道有沒有辦法算 id 為 99 的這筆資料在 ORDER BY createTime ASC, birthday DES, id DESC 裡面排序的位置是多少?
如果得知之後再用 LIMIT 1 1 和 LIMIT -1 1 獲取前後筆資料?? 但俱體方法應該要怎麼實現呢? 或是有其他的可行方式
有請高手解答