求SQL server 2000 实现 条件 分页
我对数据库的了解很少。有如下代码JSP的我需要做的是按照shmx_order中的很多字段条件来进行搜索同时还要有分页功能比如按照客户名搜索按照订单号搜索按照创建时间搜索。...
我对数据库的了解很少。有如下代码JSP的
我需要做的是 按照 shmx_order 中的很多字段条件来 进行搜索 同时还要有分页功能
比如按照 客户名搜索 按照订单号搜索 按照创建时间搜索。
这里提示 SQL2000 不支持ROW_NUMBER() OVER 如果把 不过项目已经做了很多了 不想把 数据库 再改成2005的。而且我电脑里SQl2000 和2005都装了,不过应该是用的2000的核心吧 我不太懂。连接串用的是2000的。如果能轻松的改成2005的要怎么改呢。
如果不能改成2005的,那么求2000版的SQL语句。
String strColumn = " * ";//查询出的结果的字段
String strTable = " shmx_order ";
String strSort = " id desc ";
String PKID = "PK_ID"; //这里不知道是什么?全局ID么,是和我要用的查询无关吧
String strSql = "";
String strWhere = "";
String START_ID = Integer.toString((PageNo - 1) * PageSize + 1);
String END_ID = Integer.toString(PageNo * PageSize);
strSql = " SELECT " + strColumn
+ " FROM (SELECT ROW_NUMBER() OVER(ORDER BY " + strSort
+ ") AS rownum," + strColumn + " FROM " + strTable
+ " WITH(NOLOCK) " + strWhere
+ ") AS D WHERE rownum BETWEEN " + START_ID + " AND "
+ END_ID + " ORDER BY " + strSort; 展开
我需要做的是 按照 shmx_order 中的很多字段条件来 进行搜索 同时还要有分页功能
比如按照 客户名搜索 按照订单号搜索 按照创建时间搜索。
这里提示 SQL2000 不支持ROW_NUMBER() OVER 如果把 不过项目已经做了很多了 不想把 数据库 再改成2005的。而且我电脑里SQl2000 和2005都装了,不过应该是用的2000的核心吧 我不太懂。连接串用的是2000的。如果能轻松的改成2005的要怎么改呢。
如果不能改成2005的,那么求2000版的SQL语句。
String strColumn = " * ";//查询出的结果的字段
String strTable = " shmx_order ";
String strSort = " id desc ";
String PKID = "PK_ID"; //这里不知道是什么?全局ID么,是和我要用的查询无关吧
String strSql = "";
String strWhere = "";
String START_ID = Integer.toString((PageNo - 1) * PageSize + 1);
String END_ID = Integer.toString(PageNo * PageSize);
strSql = " SELECT " + strColumn
+ " FROM (SELECT ROW_NUMBER() OVER(ORDER BY " + strSort
+ ") AS rownum," + strColumn + " FROM " + strTable
+ " WITH(NOLOCK) " + strWhere
+ ") AS D WHERE rownum BETWEEN " + START_ID + " AND "
+ END_ID + " ORDER BY " + strSort; 展开
1个回答
展开全部
String strSortAsc = " id asc "; //与strSort的相反
strSql = " SELECT " + strColumn
+ " FROM "
+ " (SELECT TOP "+END_ID+"-"+START_ID+"+1 * " //(END_ID-START_ID+1)每页的容量
+ " FROM "
+ " (SELECT TOP "+END_ID+" * FROM " + strTable + strWhere
+ " ORDER BY " + strSort
+ " ) AS D1 " //按所需条件排序后取出END_ID前的所有数据
+ " ORDER BY " + strSortAsc
+ " ) AS D2 " //按所需条件相反排序后取出一页的记录,即符合条件的记录
+ " ORDER BY " + strSort //最后,回到正常的顺序
;
strSql = " SELECT " + strColumn
+ " FROM "
+ " (SELECT TOP "+END_ID+"-"+START_ID+"+1 * " //(END_ID-START_ID+1)每页的容量
+ " FROM "
+ " (SELECT TOP "+END_ID+" * FROM " + strTable + strWhere
+ " ORDER BY " + strSort
+ " ) AS D1 " //按所需条件排序后取出END_ID前的所有数据
+ " ORDER BY " + strSortAsc
+ " ) AS D2 " //按所需条件相反排序后取出一页的记录,即符合条件的记录
+ " ORDER BY " + strSort //最后,回到正常的顺序
;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询