Планы ANSI / ISO по стандартизации LIMIT?


12

Планируется ли в настоящее время стандартизировать один из лучших способов ограничения количества результатов, возвращаемых запросом?

Вопрос переполнения стека в. Есть ли альтернатива ANSI SQL ключевому слову MYSQL LIMIT? перечисляет различные способы обработки этого поведения на разных языках:

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

Я часто не играю в БД, так что я говорю здесь по незнанию, но кажется, что это довольно важная функциональность - по крайней мере, настолько важная, что я почесываю голову, когда вижу, что она оставлена ​​на усмотрение продавцов.

Ответы:


20

В последнем проекте стандарта SQL, который я смог найти в Интернете (от 21.12.2011), в выражении запроса доступно следующее:

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

<fetch first clause> ::=
    FETCH { FIRST | NEXT } [ <fetch first quantity> ] { ROW | ROWS } { ONLY | WITH TIES }

5
Это также то, что утверждает руководство Postgres: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

Ааа, очень круто. Мне понравилось ключевое слово LIMIT из MySQL и PSQL, но я не женат на нем, и это будет облегчением, если мои запросы будут работать в кросс-СУБД.
chucksmash

3
@chucksmash За исключением MySQL, конечно. Потому что они не любят стандарты. (Ссылка: GROUP BY.)
Аарон Бертран
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.