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

前端之家收集整理的这篇文章主要介绍了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可以识别这一点,只返回遇到的行,并正确枚举.

猜你在找的MsSQL相关文章