select t.* from (select top 5 * from tb order by id desc) t
MSSQL2000下子查询排序生效,MSSQL2008失效了。。。。有没有什么可以控制其生效的办法?
------解决思路----------------------
你是说最终结果没有排序吗
是的话,在外面套一个排序就可以了
select t.* from (select top 5 * from tb order by id desc) t order by id desc
------解决思路----------------------
這樣的sql就顯得多餘了
直接
select top 5 * from tb order by id desc
------解决思路----------------------
子查詢得到的結果作為臨時表再查找數據,最後結果還是無序的,如果要排序還是要加Order by
------解决思路----------------------
你应该是用了其它影响默认排序的 关键字
如果是的话,只能再外面套一个ORDER BY 了
------解决思路----------------------
终于知道这是MSSQL0508的一个BUG,要安装补丁才能修复。。。。。天!
还有这说~~
另外,我说的能影响排序的关键字,是指GROUP BY ROW_NUMBER等
不过,回想你说SQL2000有效,而2008无效,可能真的是BUG了
------解决思路----------------------
之前是有碰到这种情况,网上说是“top 100 percent”会被优化掉,没效果。后来就改成“top 100000000”,因为我们公司的数据量顶多上百万条。
------解决思路----------------------
SELECT * FROM (SELECT TOP 5 * FROM sys.tables ORDER BY object_id DESC) t
SQL2008 R2版本测试没问题