CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

关于一个分页SQL语句的疑问

楼主ylfzly()2004-12-03 23:27:36 在 .NET技术 / ASP.NET 提问

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

相关问题

  • 分页SQL语句不灵了
  • <<<<<<<<<<求最优分页SQL语句<<<<<<<<<<<<<<<<<<<1000
  • 求jsp+oralce分页sql语句
  • 求一个分页的SQL语句
  • 关于sql语句疑问
  • 一个SQL语句,疑问?
  • Oracle排序分页的SQL语句问题
  • JSP联数据库如何分页显示 用SQL语句
  • 分页时,查询sql语句中有%,出问题
  • sql分页语句没返回记录.请教!

关键词

  • top
  • sql
  • 分页
  • curpage
  • 显示
  • 当前页
  • record
  • 记录
  • tablename where
  • tablename

得分解答快速导航

  • 帖主:ylfzly

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo