Re: [SQL ] M$SQL 實作 limit 疑問
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章