比如我有一筆資料 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 獲取前後筆資料?? 但俱體方法應該要怎麼實現呢? 或是有其他的可行方式有請高手解答
我本來的做法是下面這樣上一筆 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 獲取前後筆資料?? 但俱體方法應該要怎麼實現呢? 或是有其他的可行方式有請高手解答
上一筆 SELECT *
FROM myTable
WHERE id=99-1
下一筆
SELECT *
FROM myTable
WHERE id=99+1
几个问题;
1:ORDER BY createTime ASC, birthday DES, id DESC
这样也行??2:你前面的排序的时候CREATETIME是升序排列,到后面CREATETIME是降序排列,而且CREATETIME是第一个排序字段,那得到的时间肯定是不一样的,那么LIMIT 1得到的肯定不一样。
但是 和你的 ORDER BY createTime ASC, birthday DES, id DESC 排出来的位置应该一样的