Re: [SQL ] 某個數字往前搜尋(急)
※ 引述《paulyanzi (消失)》之銘言:
: 標題: [SQL ] 某個數字往前搜尋
: 時間: Tue Feb 8 02:21:45 2011
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 114.32.32.240
: ※ 編輯: paulyanzi 來自: 114.32.32.240 (02/08 02:35)
: 推 LPH66:你可以用 limit 30,15 (由第31筆起15筆資料) 這種方式做分頁 02/08 03:23
:
: 而且也沒辦法知道說現在是第幾筆,
: 如果可以知道,也有可能要查的時候前面資料比較舊的已經被刪掉,
: 因此筆數就就亂掉了。
:
: → paulyanzi:但是我是要往前的話?例如第30筆開始的前15筆 02/08 08:47
: 推 Linethan:將資料用integer作遞減排序再select top 4 是不是你要的? 02/08 09:20
:
: 不是 top 4,假設我給一個integer A跟id B,則是要搜尋符合B資料,
: 且integer欄位比A小(大),且最接近資料,
: 而因為我在insert的時候integer已經是由小到大了,
: 因此原本的作法搜尋比A大時剛好找到最接近的15筆,
: 可是搜尋比A小的時候則會找到符合小於的前15筆,而不是最接近的15筆。
因為你的資料預設是依integer由小到大排序
所以才會出現你說的錯誤吧
(假設A是66 你會抓出1 2 3...15 而非65 64...51 right?)
所以我才說 把資料改遞減排序後 再select top 15 就ok啦
select top 15 * from table where integer<66 order by integer desc
^^^^^^^^^^^^^^^^^^^^^^^
這樣就會抓出interger從65~51的15筆資料了
不過這樣抓出來後就會是從大到小的排序 假如你希望查詢完還是要由小至大的話
我只知道一種作法 就是把上面那一列當作一個子查詢
再select它一次 然後用integer那一欄去order:
Select data.* from
(select top 15 * from table where integer<66 order by integer desc) data
order by data.Integer
我剛試了一下 這樣寫是可以的
還是我誤會了你的意思 你要的不是這個結果嗎?
:
: ※ 編輯: paulyanzi 來自: 114.32.32.240 (02/08 09:41)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.20.191.237
※ 編輯: Linethan 來自: 211.20.191.237 (02/08 12:31)
※ 編輯: Linethan 來自: 211.20.191.237 (02/08 13:43)
Database 近期熱門文章
PTT數位生活區 即時熱門文章