Plany ANSI / ISO dotyczące standaryzacji LIMIT?

12

Czy planuje się obecnie znormalizować jeden najlepszy sposób ograniczenia liczby wyników zwracanych przez zapytanie?

Pytanie o przepełnieniu stosu pod adresem Czy istnieje ANSI SQL alternatywa dla słowa kluczowego MYSQL LIMIT? wymienia różne sposoby obsługi tego zachowania w różnych językach:

DB2 -- select * from table fetch first 10 rows only 
Informix -- select first 10 * from table 
Microsoft SQL Server and Access -- select top 10 * from table 
MySQL and PostgreSQL -- select * from table limit 10 
Oracle -- select * from (select * from table) where rownum <= 10

Nie gram często w bazach danych, więc mówię tutaj z ignorancji, ale wygląda na to, że jest to dość ważna funkcjonalność - przynajmniej na tyle ważna, że ​​drapię się w głowę, gdy widzę, że została pozostawiona dostawcom.

chucksmash
źródło

Odpowiedzi:

20

Najnowszy projekt standardu SQL, który mogłem znaleźć w Internecie (z dnia 21.12.2011), udostępnia następujące wyrażenie do użycia w wyrażeniu zapytania:

<result offset clause> ::=
    OFFSET <offset row count> { ROW | ROWS }

<fetch first clause> ::=
    FETCH { FIRST | NEXT } [ <fetch first quantity> ] { ROW | ROWS } { ONLY | WITH TIES }
Philᵀᴹ
źródło
5
Tak twierdzi również instrukcja Postgres: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name
Ach, bardzo fajnie. Podobało mi się słowo kluczowe LIMIT z MySQL i PSQL, ale nie jestem z nim związany i ulgę sprawi, że moje zapytania będą działały w sposób krzyżowy RDBMS.
chucksmash,
3
@chucksmash Oczywiście z wyjątkiem MySQL. Ponieważ nie lubią standardów. (Patrz: GROUP BY.)
Aaron Bertrand