String sql="select " + str + " from product,shop where product.shop_id=shop.shop_id " + " limit " + (page *size) + "," + size;//通过limit来达到分页的效果_
其中定义了private String str = "product.product_id,product.category_id,product.shop_id,product.sub_category_id,product.city_id,product.product_title,"
+ "shop.shop_name,shop.shop_tel,shop.shop_address,shop.shop_area,shop.shop_open_time,shop.shop_lon,shop.shop_lat,shop.shop_traffic_info";
那么问题来了,上面的mySQL语句要怎么转换成SQL server语句达到分页的效果呢?
sql server支持row number可以用来分页,具体google下sql server分页,就有答案。
sql server 的分页有几种方式,不过,我一般用row_number()函数解决:
select *
from(
select *, row_number() over(排序条件) as rowNum
from product
join shop on product.shop_id=shop.shop_id
) p
where p.rowNum >= 1 and p.rowNum < 6;
需要注意的是,row_number()的下标是从1开始的
select top size p.* from
(
select row_number() over(order by pro.product_id) as RowNumber , pro.*,shop.*
from product pro
join shop on product.shop_id=shop.shop_id
) p
where p.RowNumber > (page-1)*size
每页显示size条,page是页码号,根据product_id排序
用子查询实现分页 不论oracle mysql sqlserver 通用