sql >> Database teknologi >  >> RDS >> Mysql

Hvordan vælger man den n'te række i en SQL-databasetabel?

Der er måder at gøre dette på i valgfrie dele af standarden, men mange databaser understøtter deres egen måde at gøre det på.

En rigtig god side, der fortæller om dette og andre ting, er http://troels. arvin.dk/db/rdbms/#select-limit .

Grundlæggende understøtter PostgreSQL og MySQL den ikke-standardiserede:

SELECT...
LIMIT y OFFSET x 

Oracle, DB2 og MSSQL understøtter standardvinduefunktionerne:

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

(som jeg lige har kopieret fra siden, der er linket til ovenfor, da jeg aldrig bruger disse DB'er)

Opdatering: Fra PostgreSQL 8.4 understøttes standardvinduefunktionerne, så forvent, at det andet eksempel også fungerer for PostgreSQL.

Opdatering: SQLite tilføjede vinduesfunktioner understøtter i version 3.25.0 den 2018-09-15, så begge formularer fungerer også i SQLite.



  1. kodning UTF8 matcher ikke locale en_US; den valgte LC_CTYPE indstilling kræver kodning LATIN1

  2. Android-rum - Sådan rydder du sqlite_sequence for alle tabeller

  3. Sådan tilføjes en filgruppe til en SQL Server-database (T-SQL)

  4. Zombie PerfMon tællere, der aldrig dør!