Piani ANSI / ISO per la standardizzazione LIMIT?


12

Esistono attualmente piani per standardizzare un modo migliore per limitare il numero di risultati restituiti da una query?

La domanda di overflow dello stack in Esiste un'alternativa ANSI SQL alla parola chiave LIMIT MYSQL? elenca i vari modi per gestire questo comportamento in diverse lingue:

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

Non suono nei DB così spesso, quindi parlo qui dall'ignoranza, ma sembra che questa sia una funzionalità abbastanza importante - almeno abbastanza importante da grattarmi la testa quando vedo che è stato lasciato ai venditori.

Risposte:


20

L'ultima bozza di standard SQL che ho trovato su Internet (datata 21/12/2011) ha le seguenti informazioni disponibili per l'uso in un'espressione di query:

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

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

5
Questo è anche ciò che afferma il manuale di Postgres: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

Ah, molto bene. Mi è piaciuta la parola chiave LIMIT di MySQL e PSQL, ma non ne sono sposata e sarà un sollievo far funzionare le mie query in modo incrociato con RDBMS.
Chucksmash,

3
@chucksmash Tranne su MySQL, ovviamente. Perché a loro non piacciono gli standard. (Rif .: GROUP BY.)
Aaron Bertrand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.