2013-02-11 13 views

Odpowiedz

15

ANSI/ISO: 2003 wprowadzono funkcje okienkowe:

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 wspiera tej składni, ponieważ SQL Server 2005. SQL http://msdn.microsoft.com/en-us/library/ms189798(v=sql.90).aspx

ANSI/ISO: 2008 wprowadzono prostszy składnia dla FETCH FIRST, która może być bardziej analogiczna do składni Microsoft/Sybase TOP składnia:

SELECT person_id, person_name, age FROM person 
FETCH FIRST 3 ROWS ONLY 

Firma Microsoft jeszcze nie obsługuje tej składni. Zobacz także http://en.wikipedia.org/wiki/Select_(SQL)#Limiting_result_rows

Jeśli nadal używasz Microsoft SQL Server 2000, należy zapoznać się pytanie napisałem jakiś czas temu o zrobieniu „stronicowania” Zapytania styl: Emulate MySQL LIMIT clause in Microsoft SQL Server 2000

+3

ja nawet nie wiem, że ROW_NUMBER() OVER był ANSI SQL? – Andrew