11
是否存在ANSI SQL兼容版本的SQL SERVER的SELECT TOP n
?ANSI SQL版本的SELECT TOP 1
是否存在ANSI SQL兼容版本的SQL SERVER的SELECT TOP n
?ANSI SQL版本的SELECT TOP 1
ANSI/ISO SQL:2003年推出窗口功能:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY age ASC) AS rownum,
person_id,
person_name,
age
FROM person
) AS foo
WHERE rownum <= 3
的Microsoft SQL Server已經支持這個語法,因爲SQL Server 2005的 http://msdn.microsoft.com/en-us/library/ms189798(v=sql.90).aspx
ANSI/ISO SQL:2008年推出了一款簡單語法爲FETCH FIRST
,可能更類似於Microsoft/Sybase TOP
語法:
SELECT person_id, person_name, age FROM person
FETCH FIRST 3 ROWS ONLY
Microsoft尚不支持此語法。又見http://en.wikipedia.org/wiki/Select_(SQL)#Limiting_result_rows
如果你還在使用Microsoft SQL Server 2000,你應該讀一個問題,我發佈了前陣子關於做「尋呼」樣式的查詢: Emulate MySQL LIMIT clause in Microsoft SQL Server 2000
我甚至不知道ROW_NUMBER() OVER是ANSI SQL? – Andrew 2013-02-11 00:41:19