Planos ANSI / ISO para padronização LIMIT?


12

Atualmente, existem planos para padronizar uma melhor maneira de limitar o número de resultados retornados por uma consulta?

A pergunta de estouro de pilha em Existe uma alternativa ANSI SQL para a palavra-chave MYSQL LIMIT? lista as várias maneiras de lidar com esse comportamento em 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

Eu não jogo nos DBs com frequência, por isso estou falando da ignorância aqui, mas parece que essa é uma funcionalidade muito importante - pelo menos importante o suficiente para coçar a cabeça quando vejo que ela é deixada para os fornecedores.

Respostas:


20

O último rascunho do padrão SQL que eu encontrei na Internet (21/12/2011) tem o seguinte disponível para uso em uma expressão 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 }

5
Isso também é o que o manual do Postgres afirma: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

Ahh, muito legal. Gostei da palavra-chave LIMIT do MySQL e PSQL, mas não sou casada com ela e será um alívio ter minhas consultas trabalhando de forma cruzada com RDBMS.
Chrismash

3
@chucksmash Exceto no MySQL, é claro. Porque eles não gostam de padrões. (Ref: GROUP BY.)
Aaron Bertrand
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.