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可以识别这一点,只返回遇到的行,并正确枚举.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...