ANSI / ISO-Pläne zur LIMIT-Standardisierung?


12

Gibt es derzeit Pläne, eine beste Methode zur Begrenzung der Anzahl der von einer Abfrage zurückgegebenen Ergebnisse zu standardisieren?

Die Frage zum Stapelüberlauf unter Gibt es eine ANSI SQL-Alternative zum Schlüsselwort MYSQL LIMIT? listet die verschiedenen Möglichkeiten auf, mit diesem Verhalten in verschiedenen Sprachen umzugehen:

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

Ich spiele nicht so oft in DBs, also spreche ich hier aus Unwissenheit, aber es scheint, dass dies eine ziemlich wichtige Funktionalität ist - zumindest wichtig genug, dass ich mir den Kopf kratzt, wenn ich sehe, dass es den Anbietern überlassen wurde.

Antworten:


20

Der neueste Entwurf eines SQL-Standards, den ich im Internet finden konnte (vom 21.12.2011), bietet Folgendes zur Verwendung in einem Abfrageausdruck:

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

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

5
Dies ist auch, was das Postgres-Handbuch behauptet: postgresql.org/docs/current/static/sql-select.html#SQL-LIMIT
a_horse_with_no_name

Ahh, sehr cool. Ich mochte das Schlüsselwort LIMIT von MySQL und PSQL, bin aber nicht damit verheiratet, und es wird eine Erleichterung sein, wenn meine Abfragen RDBMS-übergreifend funktionieren.
Chuckmash

3
@chucksmash Außer natürlich unter MySQL. Weil sie keine Standards mögen. (Ref: GROUP BY.)
Aaron Bertrand
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.