日期:2014-05-17  浏览次数:20698 次

sql SERVER 如何去查询结果的10-20行
如题没有ID列
NAME sex age
小明 男  12
小红 男  12
。。。。
我如何去查询出来的第10至第20行 
sql SERVER 
------最佳解决方案--------------------
select NAME,sex,age
from (
select NAME,sex,age,row_number() over(order by getdate()) as rowid
from table) as a
where rowid between 10 and 20

------其他解决方案--------------------
select top 10 * from(
select top 20 * from tb order by id asc)t order by id desc

------其他解决方案--------------------

select NAME, sex, age, row_number() over (order by getdate()) jb 
from tableName
where jb>=10 and jb<=20

------其他解决方案--------------------
引用:
SQL code?1234select NAME, sex, age, row_number() over (order by getdate()) jb from tableNamewhere jb>=10 and jb<=20
7楼的写法有点问题,不过思路是对的,因为执行顺序有问题,先是执行where 中再,执行窗口函数的,否则会报where 中jb不存在的错误的

select NAME, sex, age, row_number() over (order by getdate()) jb into #a  from tableNamewhere select * from #a where jb>=10 and jb<=20

------其他解决方案--------------------
查两次?一次top 20,一次top 10,把top 20结果中的top 10剔除?
------其他解决方案--------------------
查询的时候加一个序号列吧
------其他解决方案--------------------
row_number()  在10-20之间.
------其他解决方案--------------------
DECLARE @page INT, @size INT
SELECT @page = 2, @size = 10
SELECT 
*
FROM tb
ORDER BY name
OFFSET (@page -1) * @size ROWS
FETCH NEXT @size ROWS ONLY;

------其他解决方案--------------------
引用:
引用:SQL code?1234select NAME, sex, age, row_number() over (order by getdate()) jb from tableNamewhere jb>=10 and jb<=207楼的写法有点问题,不过思路是对的,因为执行顺序有问题,先是执行where 中再,执行窗口函数的,否……

嗯,是有点问题,同意8楼写法
------其他解决方案--------------------
感谢各位 结贴了~