sql >> Database >  >> RDS >> Mysql

Hoe de n-de rij in een SQL-databasetabel te selecteren?

Er zijn manieren om dit te doen in optionele delen van de standaard, maar veel databases ondersteunen hun eigen manier om dit te doen.

Een echt goede site die hierover en andere dingen praat, is http://troels. arvin.dk/db/rdbms/#select-limit .

In principe ondersteunen PostgreSQL en MySQL de niet-standaard:

SELECT...
LIMIT y OFFSET x 

Oracle, DB2 en MSSQL ondersteunen de standaard vensterfuncties:

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

(die ik zojuist heb gekopieerd van de hierboven gelinkte site omdat ik die DB's nooit gebruik)

Bijwerken: Vanaf PostgreSQL 8.4 worden de standaard vensterfuncties ondersteund, dus verwacht dat het tweede voorbeeld ook voor PostgreSQL werkt.

Bijwerken: SQLite heeft ondersteuning voor vensterfuncties toegevoegd in versie 3.25.0 op 15-09-2018, dus beide vormen werken ook in SQLite.



  1. Postgres gebruikt geen index wanneer indexscan een veel betere optie is

  2. Hoe een enkele rij te vergrendelen

  3. Een eenvoudige selectiequery maken in de ontwerpweergave in Access 2016

  4. sql use-instructie met variabele