读书人

问一个SQL话语 如果加个分页效果

发布时间: 2013-03-26 09:54:34 作者: rapoo

问一个SQL语句 如果加个分页效果

SELECT top 5 O.OrderType,O.ShippingMethod, OA.* FROM Orders O ,OrderAddress OA
WHERE O.ORDERID =OA.OrderID AND O.OrderStatusID<690 AND IsHoldOn =0 AND OA.IsBillingAddress=0 AND O.IsDeleted=0

上面语句是查询 Orders O ,OrderAddress OA 这二个表数据

for(int i=0;i<10;i++){
我现在是需求是 这个循环 去使用上面的语句, 上面每次查询5 条记录,分页的条件就是这个i 值 就是i=0 查询前5条, i=1 查询6到10条,
}
求大家帮忙个 上面语句如何加个分页效果。
[解决办法]
你直接在select的时候,添加一个新列,使用ROW_NUMBER() as ID,具体使用google一下,然后where ID between 6 and 10直接选取数据。
你现在的设计,会返回所有数据,引起不必要的资源消耗。
[解决办法]



select top(5) * from
(
select top((@i+1) * 5) O.OrderType,O.ShippingMethod, OA.* FROM Orders O ,OrderAddress OA
WHERE O.ORDERID =OA.OrderID AND O.OrderStatusID<690 AND IsHoldOn =0 AND OA.IsBillingAddress=0 AND O.IsDeleted=0
order by O.ORDERID asc
)
order by
O.ORDERID desc

读书人网 >SQL Server

热点推荐