在两个行号之间返回行(在Range之间)

时间:2014-10-31 04:09:55

标签: sql sql-server

UsersTbl结构:

id | uname
 __  ____
1  | name0
2  | name1
4  | name2
1  | name3
8  | name4
5  | name5
6  | name6

我正在寻找哪种查询:
选择第2行到第5行之间的每一行的查询(不使用id列)
例:

//start = 2
//end = 5
select * from users where rownum >= start and where rownum <= end

结果应该是:

NAME2,NAME3,NAME4,NAME5
语法? (mssql,注意:我正在使用经典的asp(并不重要))

3 个答案:

答案 0 :(得分:2)

您可以使用ROW_NUMBER根据您显示的顺序生成行号。然后,您可以在WHERE子句中使用它。

例如:

SELECT
    id,
    uname,
    ROW_NUMBER() OVER (ORDER BY uname) AS rownum
FROM UsersTbl 
WHERE   
(rownum >= 2) AND 
(rownum <= 6)
ORDER BY uname

答案 1 :(得分:1)

此查询适用于SQL Server 2008 r2

with summary 

as(

select ROW_NUMBER () over (Order by uName) as rn,UNAME

from [USE])

select uname

from summary S

WHERE S.rn >2 AND S.rn <= 6 

答案 2 :(得分:0)

SELECT id,uname,ROW_NUMBER() OVER (ORDER BY uname) AS Rownumber
FROM UsersTbl 
WHERE   
(rownumber >= 2) AND (rownumber <= 6)

尝试这个我觉得它会起作用