微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql – 返回特定范围之间的行,并带有一个select语句

我正在寻找一些这样的表达(使用sql Server 2008)
SELECT TOP 10 columName FROM tableName

但是,而不是我需要10到20之间的值.我想知道是否有一种方法只使用一个SELECT语句.

例如这是没用的:

SELECT columName FROM
(SELECT ROW_NUMBER() OVER(ORDER BY someId) AS RowNum,* FROM tableName) AS alias
WHERE RowNum BETWEEN 10 AND 20

因为选择内部的括号已经返回所有的结果,我期待避免,由于性能.

解决方法

row_number有一个技巧,它不涉及排序所有的行.

尝试这个:

SELECT columName
FROM (SELECT ROW_NUMBER() OVER(ORDER BY (select NULL as noorder)) AS RowNum,*
      FROM tableName
     ) as alias
WHERE RowNum BETWEEN 10 AND 20

你不能按顺序使用常数.但是,您可以使用一个计算为常量的表达式. sql Server可以识别这一点,只返回遇到的行,并正确枚举.

原文地址:https://www.jb51.cc/mssql/75790.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐