order by在SQL Server與Oracle中的一個區別

lawzjf發表於2007-03-12

在SQL Server中,子查詢如果使用order by,則報錯:

1> select * from (select au_fname from authors) as d
2> go
au_fname
--------------------
Abraham
Reginald
Cheryl

1> select * from (select au_fname from authors order by au_fname) as d
2> go
訊息 1033,級別 15,狀態 1,伺服器 LAW,行 1
除非同時指定了 TOP,否則 ORDER BY 子句在檢視、內嵌函式、派生表和子查詢中無效。

在這裡,加上order by後,SQL Server不再把子查詢結果當作一個集合,而是當作一個遊標,而遊標不能作為表來用。

在Oracle中卻沒問題:

SQL> select * from (select ename,sal from emp order by sal)
2 /

ENAME SAL
---------- ----------
SMITH 800
JAMES 950
ADAMS 1100


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/37724/viewspace-152575/,如需轉載,請註明出處,否則將追究法律責任。

相關文章