select b.* from ( select top 10 a.* from ( select top 20 * from HaoMa order by hm_id asc ) a order by a.hm_id desc ) b order by b.hm_id desc
是不是看着眼晕,那这样写
select b.* from
(
select top 5 a.* from
(
select top 10 * from customers order by CustomerID asc
) a order by a.CustomerID desc
) b
order by b.CustomerID
这就明白了吧,详细的介绍如下: fromhttp://www.cnblogs.com/gossip/archive/2011/04/16/2018099.html
SQL SERVER取第几行到第几行的方法(包括2000和2005+)
--SQL SERVER 2000 取第几行到第几行的方法
--(第一种方法) 效率最差
select top 5 * from customers where
CustomerID not in (select top 5 CustomerID from customers)
--(第二种方法) 效率最好, 这里先执行的是Order by 然后才执行Top
select b.* from
(
select top 5 a.* from
(
select top 10 * from customers order by CustomerID asc
) a order by a.CustomerID desc
) b
order by b.CustomerID
--(第三种方法) 利用临时表和identity(int,1,1
DROP TABLE #temp
select identity(int,1,1) as rowID,* into #temp from customers
SELECT * FROM #temp WHERE rowID>5 AND rowID<=10
--SQL SERVER 2000 取第几行到第几行的方法
--SQL SERVER 2005+ 取第几行到第几行的方法
SELECT b.* FROM
(
SELECT ROW_NUMBER() OVER(ORDER BY c.customerid) rowIndex,* FROM Customers c
) b
WHERE b.rowIndex>5 AND b.rowindex<=10
--SQL SERVER 2005+ 取第几行到第几行的方法
----------------------------------------------------------
对正序的数据倒序排列:
select * from( select top 20 * from HaoMa order by hm_id )a order by hm_id desc