Re: [SQL ] 某個數字往前搜尋(急)

看板Database (資料庫)作者 (冷冷的心)時間15年前 (2011/02/08 12:29), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《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)
文章代碼(AID): #1DKCR68F (Database)
文章代碼(AID): #1DKCR68F (Database)