Sql 对表分页并获取行计数
下面的查询从表中获取从第10行开始到第20行结束的行的子集。此外,要保存查询,我需要返回表中的总行数。这是我能想到的最好的解决办法。有没有更有效/优雅的方法?特别是,我不喜欢按1划分的Sql 对表分页并获取行计数,sql,sql-server-2008,Sql,Sql Server 2008,下面的查询从表中获取从第10行开始到第20行结束的行的子集。此外,要保存查询,我需要返回表中的总行数。这是我能想到的最好的解决办法。有没有更有效/优雅的方法?特别是,我不喜欢按1划分的部分 select * from (select count(*) over (partition by 1) as [count], row_number() over (order by [Name],[Description]) as [row], *
部分
select *
from (select count(*) over (partition by 1) as [count],
row_number() over (order by [Name],[Description]) as [row],
*
from [Products]) as t
where row between 10 and 20
如果你不喜欢它,就把它拿走
select *
from (select count(*) over () as [count],
row_number() over (order by [Name],[Description]) as [row],
*
from [Products]) as t
where row between 10 and 20
然而,撇开这一点不谈,这个查询并不是最优的。你应该用传统的方法数数
select *
from (select count(*) as [count]
from [Products]) X
cross join (
select row_number() over (order by [Name],[Description]) as [row],
*
from [Products]) as t
where row between 10 and 20
您可以将这两者放在一起,然后按Ctrl-M,然后执行。这些计划看起来将大不相同