当前位置: 代码迷 >> Java Web开发 >> 哪位高手知道用top写分页的sql语句如何写
  详细解决方案

哪位高手知道用top写分页的sql语句如何写

热度:34   发布时间:2016-04-16 22:07:40.0
谁知道用top写分页的sql语句怎么写?
不知道该如何写,以下的limit是mysql的写法,哪位大神可以教我sqlserver该怎么写呢?超级感谢
public ArrayList<Goods> queryPage(int currentPageIndex,int countPerPage)
{
ArrayList<Goods> pageGoods=new ArrayList<Goods>();
try {
Connection con=DBUtil.getCon();
String sql="select *from d_goods limit?,?";

PreparedStatement prep=con.prepareStatement(sql);
prep.setInt(1, (currentPageIndex-1) *countPerPage);
prep.setInt(2,countPerPage);
ResultSet rs=prep.executeQuery();
while(rs.next())
{
Goods g=new Goods();
/*g.setId(rs.getInt("id"));*/
g.setGood_name(rs.getString("good_name"));
g.setFixed_price(rs.getDouble("fixed_price"));

g.setScore(rs.getInt("score"));
g.setProduct_pic(rs.getString("product_pic"));
pageGoods.add(g);
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return pageGoods;
}
------解决方案--------------------
select top countPerPage id from t1 where id not in (select top (currentPageIndex-1) *countPerPage from t1);

大概是这样,具体修改一下~
------解决方案--------------------

select top? id,name from tab1 where id not in(select top? id from tab1)
第一个问号:每页显示的数据条数
第二个问号:排除前n条数据(当前页码*每页显示的条数)

------解决方案--------------------
谁发明的这种奇葩写法
------解决方案--------------------
top  row_number() 看着个链接额i 
------解决方案--------------------
select top 10 * from (select a.name,a.age,ROW_NUMBER() over(order by a.id)rid  from t_person a) b where b.rid >0 order by b.rid asc
具体数字你换下,10代表每页显10个,rid>0表示从rid等于1开始的纪录。
  相关解决方案