[問題]為何SQL Server不支援LIMIT分頁語法? 20tomexou]

发布时间:2014-1-1 0:09:47编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"[問題]為何SQL Server不支援LIMIT分頁語法? 20tomexou]",主要涉及到[問題]為何SQL Server不支援LIMIT分頁語法? 20tomexou]方面的内容,对于[問題]為何SQL Server不支援LIMIT分頁語法? 20tomexou]感兴趣的同学可以参考一下。

講到SQL的分頁方式,在SQL-92裏,都是用LIMIT語法 偏偏SQL Server就是用TOP,甚至到SQL2008後用RANK方式 但它的直覺性都不如LIMIT好用。 查了google,洋人都痛罵微軟死不支援 以微軟從善如流的企業文章,怎會一直不支援LIMIT語法呢? 大家說說背後原因吧?

limit是sql标准?

LIMIT好象是oracle的 而不是MS-SQL的

嗯,网络时代,翻页是必不可少的,应该支持这样的语法: select skip m top n ... from ... where ... order by ... 可惜微软一直无视skip的需求

LIMIT和SKIP斗没见过。

无法是语法的差别,limit和top的实现和效率应该没什么差别 

还有一个:in的语法需要加强 in只支持单列,不支持(f1,f2) in (select fa,fb from ...)  只能用join实现

只是个运算符而已

像MySQL或SQLite都支援LIMIT語法,如: SELECT * FROM Table1 LIMIT 10, 5   // 每頁10筆,從第5筆(offset) 要查前10筆: SELECT * FROM Table1 LIMIT 10 這樣的語法,要程序化很容易,不像top+rank要串一大堆語令。

虽然功能有实现,确定在写法上很麻烦的!

强人所难.

没有也挺好的,什么都让人家给弄好 我们也该下岗了

引用 10 楼 dawugui 的回复:强人所难. 说到这个,才是我一直不理解的: 数据库引擎在内部输出最终结果集时,多增加一列(最后结果集的记录序号),应该没增加多大开销 微软为什么就不提供呢? 如果有了它(top+skip),分页实现就非常简单了,不像现在只有top,不得不反复几次top才能实现skip n top m简单实现的结果 而且,如果数据库引擎实现,它只要先产生 序号和id 这样的结果集(因为只有2个整数字段,一般它比真正的结果集要小多了),然后按skip n top m得到只有m条记录的2个整数字段结果集,然后再按id去关联sql真正要求返回的所有字段 这样的过程,io的开销应该比现在的做法要低很多。。。。。

sz_haitao說中我的心聲, 分頁程序實作不難 只要微軟的sql語法支援一下, 成千上萬的程序員就不用寫得半死 一直rank來top去的,浪費時間。 微軟不從善如流,肯定背後有問題。

分页会导致更新很频繁的表,2次显示的结果不同(如上次在第一页的某条数据,翻页时,在第二页也出现了!) 在金融等业务上这样可能是很要命的 但是现在web时代,这种情况是很容易被理解的,再不提供就很不应该了

selec

太那个了,这么方便的limit它居然没这样的功能。微软真是...  流水人家

后来自立自强,写了一个limit的解译函式 就可以使用简便的limit语法,再由函式自动解释成mssql的rank分页语法 详情: http://tomex.dabutek.com/2010/01/sqllimit.html 微软现在主推linq,看起来limit语法应该不会写了。


上一篇:[推荐] Denali的T-SQL增强 (1) 20CN_SQL]
下一篇:mssql2k5的分区表问题:这种最通用的分区规则,对于索引有好处吗? 100sz_haitao]

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款