加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 08:38:08 所属栏目:MsSql教程 来源:网络整理
导读:我正在寻找一些这样的表达(使用SQL Server 2008) SELECT TOP 10 columName FROM tableName 但是,而不是我需要10到20之间的值.我想知道是否有一种方法只使用一个SELECT语句. 例如这是没用的: SELECT columName FROM(SELECT ROW_NUMBER() OVER(ORDER BY someId
我正在寻找一些这样的表达(使用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可以识别这一点,只返回遇到的行,并正确枚举.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读