Re: [SQL ] M$SQL 實作 limit 疑問

看板Database (資料庫)作者 (haha)時間18年前 (2007/02/05 21:01), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《jsu (右持滑鼠左打鍵盤)》之銘言: : 我是新手我是新手,請不要捅我太大力拜託 : 由於客戶用該死的〔昏倒伺服二千專業〕所以必須使用 M$SQL : 要製作簡易的搜尋,在將結果列出時遇到問題 : 一大堆資料當然不可能一次全列出,通常做法是 limit : 舉例,都是取第 40 ~ 50 筆資料 : MySQL statement: : select * : from <table> : where <field> = <some rules> : limit <40>, <50> : order by <order> desc : M$SQL statement: : select * : from (select top <10> <field1>, <field2>... : from (select top <50> <field1>, <field2>... : from <table> : where <field> = <some rules> : order by <order> desc) as newtable1 : order by <order> asc) as newtable2 : order by <order> desc : 相信大家看到這個指令都昏倒了,請原諒,小弟是新手 : 再笨的人也知道,丟一個 sql statement 卻有了 : 三次的 selects 跟三次的 order-bys : 效能自然是可笑無比了,同樣功能在我的爛 BSD 上效能差達十倍有餘 : 〔我知道我硬幹是不對的 ~_~ 〕 : 勉強以這樣的原則寫出來的程式真可是奇醜無比 : 畢竟要動態增減一堆有的沒有的條件 : 在不動用 store procedure 的情況下,想請教有什麼正規的做法嗎? 整個limit語法只有裡面兩個select是必須的,外面那個 select是因為你還要排select出來的結果,不是必要的 如果要做limit的話只能這樣或是使用cursor http://www.microsoft.com/hk/community/chatroom/2004/Partner_TechTalk_ QA_20040227.aspx Q42: 如何讓SQL的select結果部份傳回,像如同mySQL的"SELECT * FORM Foo WHERE id>100 LIMIT 200,10"只傳回第200列開始的10列? A: 可能需要使用 CURSOR (資料指標) 來處理這個工作 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.209.4

02/06 08:35, , 1F
感謝提供方向 :)
02/06 08:35, 1F
文章代碼(AID): #15nogYsy (Database)
討論串 (同標題文章)
文章代碼(AID): #15nogYsy (Database)