如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y] [重复]
Posted
技术标签:
【中文标题】如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y] [重复]【英文标题】:How to use LIMIT [X] OFFSET [Y] with SQL Server 2005 [duplicate] 【发布时间】:2011-09-29 16:51:45 【问题描述】:可能重复:Equivalent of LIMIT and OFFSET for SQL Server?
如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y],我看到 mysql、oracle、sqllite、postgre 都有,微软没有意识到我们需要它?
【问题讨论】:
【参考方案1】:Microsoft(您可能会说是为了改变)选择实施 ANSI 标准,而不是提出自己的专有关键字,例如 LIMIT。在 SQL Server 的下一版本(代号为“Denali”)中,您将能够使用OFFSET / FETCH(另请参阅this post on simulating keyset)。
与此同时,您将需要对 SQL Server 使用不同的方法(或者如果您认为这比额外输入更容易,请切换平台)。关于在现有版本中分页的几种方法的好文章在这里:
SQL Server 2005 Paging – The Holy Grail请务必点击“加入讨论”,阅读 60 多个讨论所提供解决方案各个方面的后续 cmets。
请注意,出于性能原因,未实现 OFFSET / FETCH;只为生产力。换句话说,OFFSET / FETCH 的性能与目前通常使用的 ROW_NUMBER() 解决方案大致相同。
编辑 虽然有些案例证明了 Denali 在首页上的表现更好(例如 this one),但这不是本意,我不相信在您遍历时增量仍然正确表并进入后面的页面(尤其是在大表上)。
【讨论】:
以上是关于如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y] [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 2005 中使用 LIMIT [X] OFFSET [Y] [重复]
如何在 SQL Server 2000/2005/2008 中使用 FLOAT 转换小数位数
如何在 SQL Server 2005/2008 中清除查询执行统计信息