Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie wählt man die n-te Zeile in einer SQL-Datenbanktabelle aus?

Es gibt Möglichkeiten, dies in optionalen Teilen des Standards zu tun, aber viele Datenbanken unterstützen ihre eigene Art, dies zu tun.

Eine wirklich gute Seite, die über diese und andere Dinge spricht, ist http://troels. arvin.dk/db/rdbms/#select-limit .

Grundsätzlich unterstützen PostgreSQL und MySQL den Nicht-Standard:

SELECT...
LIMIT y OFFSET x 

Oracle, DB2 und MSSQL unterstützen die standardmäßigen Windowing-Funktionen:

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
    columns
  FROM tablename
) AS foo
WHERE rownumber <= n

(die ich gerade von der oben verlinkten Seite kopiert habe, da ich diese DBs nie verwende)

Aktualisieren: Ab PostgreSQL 8.4 werden die standardmäßigen Windowing-Funktionen unterstützt, erwarten Sie also, dass das zweite Beispiel auch für PostgreSQL funktioniert.

Aktualisieren: SQLite hat in Version 3.25.0 am 15.09.2018 Unterstützung für Fensterfunktionen hinzugefügt, sodass beide Formulare auch in SQLite funktionieren.