Плани 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, але я не одружений з ним, і мої запити будуть полегшувати перехресну RDBMS.
патронник

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