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.

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 }


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.