1)SqlServer分页查询
select top 3 * from newsnews where Number not in (select top 3 Number from newsnews order by Number asc) order by Number asc
select top [pagesize] * from table where id not in ( select top [pagesize*(currentpage-1)] id from table [查询条件] order by id ) and [查询条件] order by id
实际使用:

/** *//**
* 分页显示
* @return ArrayList结果集
*/
public java.util.ArrayList findAllNews(String number,String title,String date,int pagesize,int page) ...{
ArrayList newslist = new ArrayList();
StringBuffer sql = new StringBuffer();
try ...{
conn = manager.getConnection();
stat = conn.createStatement();
sql.append("select top ");
sql.append(pagesize);
sql.append(" * from newsnews ");
sql.append("where Number not in (select top ");
sql.append(pagesize*page);
sql.append(" Number from newsnews ");
sql.append(" order by Number asc) ");
sql.append(" order by Number asc");
System.out.println("分页查询代码:"+sql.toString());
set = stat.executeQuery(sql.toString());
while (set.next()) ...{
InforBean infor = new InforBean();
infor.setNumber(set.getInt("number")+"");
infor.setTitle(set.getString("title"));
infor.setPosttime(set.getString("posttime"));
newslist.add(infor);
infor =null;
}
} catch (SQLException e) ...{
e.printStackTrace();
} finally ...{
try ...{
conn.close();
set.close();
} catch (SQLException e1) ...{
e1.printStackTrace();
}
}
return newslist;
}
2)oracle或者DB2的分页查询
Oracle数据库使用关键字:rowid或rownum
DB2:rowid或rownum ()
SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM (...... ) row_ WHERE rownum <= ?) WHERE rownum_ > ?
这种用嵌套3层的分页sql是处理效率最高的办法,你找不到更高效的方法。
实际使用:

/** *//**
* 把一般的SQL语句构造成分页的SQL语句
* @param querySql-查询结果
* @param page-页码
* @param pageSize-每页记录数
* @return String-分页的SQL语句
*/
public static String getPageSQL(String querySql, int page, int pageSize) ...{
int startNum = (page - 1) * pageSize + 1;
int endNum = startNum + pageSize - 1;
//获取数据,并根据实际情况分页。
StringBuffer sb = new StringBuffer(
" select * from ( select rownum rnm, a.* from (");
sb.append(querySql);
sb.append(" ) a where rownum <=");
sb.append(endNum).append(" ) where rnm >= ").append(startNum);
String pageSql = sb.toString();
return pageSql;
}
本文介绍了在Sql Server、Oracle及DB2数据库中实现分页查询的有效方法,包括具体SQL语句构造方式及其Java代码实现,适用于快速定位和展示大量数据。
&spm=1001.2101.3001.5002&articleId=1735935&d=1&t=3&u=c31d75db9e3d4620aff8839fdac9e502)
1678

被折叠的 条评论
为什么被折叠?



