如何在 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 中清除查询执行统计信息

如何在 SQL Server 2005 中进行更新插入(更新或插入)

在 SQL Server 2005 中配置数据库邮件

如何转换SQL Server 2008数据库到SQL Server 2005