¿Planes ANSI / ISO para la estandarización LIMIT?


12

¿Existen actualmente planes para estandarizar una mejor manera de limitar el número de resultados devueltos por una consulta?

La pregunta de desbordamiento de pila en ¿Hay una alternativa ANSI SQL a la palabra clave MYSQL LIMIT? enumera las diversas formas de manejar este comportamiento en diferentes idiomas:

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

No juego en DB tan a menudo, así que estoy hablando por ignorancia aquí, pero parece que esta es una funcionalidad bastante importante, al menos lo suficientemente importante como para que me rasque la cabeza cuando veo que se ha dejado en manos de los vendedores.

Respuestas:


20

El último borrador del estándar SQL que pude encontrar en Internet (con fecha 21/12/2011) tiene lo siguiente disponible para usar en una expresión de consulta:

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

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

55
Esto también es lo que dice el manual de Postgres: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

Ahh, muy bien. Me gustó la palabra clave LIMIT de palabras clave de MySQL y PSQL, pero no estoy casada con ella y será un alivio tener mis consultas trabajando de forma cruzada RDBMS.
chucksmash

3
@chucksmash Excepto en MySQL, por supuesto. Porque no les gustan los estándares. (Ref: GROUP BY.)
Aaron Bertrand
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.