先看一个查询:
select top 3 [id],[title] from [table1] where ([id]<5) order by [id] asc;
表中有id=1,2,3,4,5的几行数据,本来想按顺序得到id=4,3,2的数据行,但该查询实际得到的是id=2,3,4顺序的数据行。
当然,可在程序中对数据集重新排序,但实际应用中不太方便,想直接利用sql语句来完成。后来想到一种方法,利用了临时表。如下:
if object_id(tempdb.dbo.#tmp)>0
drop table #tmp;
select into #tmp from
(select top 3 [id],[title] from [table1] where ([id]<5) order by [id] asc);
select * from #tmp order by [id] desc;
先创建临时表,然后把查询结果存入临时表,最后从临时表查询数据并按需要重新排序。
********