sql server 2008 如何分页和总条数一次性查出来 20korein]

发布时间:2014-1-1 0:09:47
来源:分享查询网

最近在做分页,用到了这个新技术,分页没问题的,可是这个总条数也是要显示的,但是不知道该如何一次性查询出来,查两次也太原始化了吧。 请教高手~~~

学习一下!

什么意思?

declare @t table (c int) insert into @t select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9 union all select 0 select TOP 5 *,(SELECT COUNT(1) FROM @t) as total from @t --------------- /* 1 10 2 10 3 10 4 10 5 10 */ 这样?

to:aoyihuashao 不是top这么简单,是用 WITH TEMP AS(  SELECT *, ROW_NUMBER() OVER (order by proj_name,pdls_position) AS ROW   FROM (...) a ) SELECT * FROM TEMP where ROW >= 10 AND ROW < 20 我想在这个语句中把总条数也一起查出来。

WITH TEMP AS(  SELECT *, ROW_NUMBER() OVER (order by proj_name,pdls_position) AS ROW   FROM (...) a )  WITH F AS (SELECT * FROM TEMP where ROW >= 10 AND ROW < 20) select count(1) from f

引用 4 楼 korein 的回复:to:aoyihuashao  不是top这么简单,是用  WITH TEMP AS(  SELECT *, ROW_NUMBER() OVER (order by proj_name,pdls_position) AS ROW  FROM (...) a )  SELECT * FROM TEMP where ROW >= 10 AND ROW  < 20  我想在这个语句中把总条数也一起查出来。 SELECT  *,记录总数据=(select count(1) from t  where ROW >= 10 AND ROW < 20) FROM TEMP   where ROW >= 10 AND ROW < 20 

果然人多力量大~可以修改最后的那块: SELECT *  FROM TEMP a inner join (select COUNT(1) as totalNum from TEMP) b on 1=1 where ROW >= 10 AND ROW < 20 这样就一个表里出来了。 但是忽然发现分页显示的时候这样似乎用起来并不是很方便,还是两次查询吧。。。多谢各位~~

或者可以这样,如果要在最后显示分页就把条数union到最后,要在前面显示就union到前面,这样就一次查询了。不过程序里处理或许相对啰嗦些~~ 各位who对这个有更好的建议,木有结贴喽~~

select * from 表 seclec count(*) as rows from 表 这样,在asp.net里,用DataSet取得,就是两张表。主数据dataset.table[0]总条数为dataset.table[1]

返回顶部
查看电脑版