关于一个分页SQL语句的疑问
int curpage=1;//当前页
int page_record=3;//每页显示的记录数
curpage=Request.QueryString["page"].ToString();//获取传递的值,需要显示的页
string sql="select top "+page_record+" * from tablename where id not in
(select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc";
我针对这个SQL来分析如下:
一页(id) 二页(id) 三页(id)
3 6 9
2 5 8
1 4 7
当前页为1时,显示记录3,2,1[id not in (6,5,4)]
当前页为2时,显示记录可还是3,2,1[id not in(9,8,7,6,5,4)]
但这条语句打在sqlserver查询分析器里能正常分页。忘诸位能给个分析。谢谢
问题点数:0、回复次数:9Top
1 楼lanbaibai(蓝白白)回复于 2004-12-03 23:53:36 得分 0
select top "+page_record+" * from tablename where id not in
(select top "+(curpage*page_record)+" id from tablename order by id desc) order by id ";Top
2 楼ylfzly()回复于 2004-12-04 00:17:54 得分 0
还是一样的.
当前页为1时,执行select top 3 * from tablename where id not in(9,8,7)于时就得到第一页显示的3,2,1记录,
当前页为2时,执行select top 3 * from tablename where id not in(9,8,7,6,5,4)于量还是得到第二页显示的记录仍然是3,2,1呀。是我哪里分析出错了呢?Top
3 楼ccwq(Wind Love Rove Forever)回复于 2004-12-04 00:27:17 得分 0
ID有没有检测有效性,
数据有没有重新绑定?Top
4 楼ylfzly()回复于 2004-12-04 11:20:43 得分 0
id就
3 6 9
2 5 8
1 4 7
Top
5 楼ylfzly()回复于 2004-12-04 13:10:05 得分 0
?Top
6 楼ylfzly()回复于 2004-12-04 17:27:40 得分 0
检查了下这样排列要好看点
9 6 3
8 5 2
7 4 1
第一页时:(987654321)not in(9,8,7)得到第一页显示的数据为6,5,4
可不正确呀.第一页该显示9,8,7呀,难道这个sql不能分页吗?
Top
7 楼czzhc(zhc)回复于 2004-12-04 17:50:44 得分 0
int curpage=1;//当前页
int page_record=3;//每页显示的记录数
curpage=Request.QueryString["page"].ToString();//获取传递的值,需要显示的页
string sql="select top "+curpage*page_record+" * from tablename where id not in
(select top "+((curpage-1)*page_record)+" id from tablename order by id desc) order by id desc";
这样不就行了Top
8 楼ylfzly()回复于 2004-12-04 18:04:43 得分 0
就-1行了.谢谢,看来我不该太相信原创了Top
9 楼zhzuo(秋枫)回复于 2004-12-05 15:53:53 得分 0
分页存储过程很一般,不过测试没有问题。
http://blog.csdn.net/zhzuo/archive/2004/10/29/158638.aspxTop




