作者retsamsu (haha)
看板Database
标题Re: [SQL ] M$SQL 实作 limit 疑问
时间Mon Feb 5 21:01:21 2007
※ 引述《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
1F:推 jsu:感谢提供方向 :) 02/06 08:35