sql >> Databasteknik >  >> RDS >> Mysql

Hur väljer man den n:e raden i en SQL-databastabell?

Det finns sätt att göra detta i valfria delar av standarden, men många databaser stödjer sitt eget sätt att göra det.

En riktigt bra sida som pratar om detta och andra saker är http://troels. arvin.dk/db/rdbms/#select-limit .

I grund och botten stöder PostgreSQL och MySQL den icke-standardiserade:

SELECT...
LIMIT y OFFSET x 

Oracle, DB2 och MSSQL stöder standardfönsterfunktionerna:

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

(som jag nyss kopierade från sidan som länkas till ovan eftersom jag aldrig använder dessa DB)

Uppdatering: Från och med PostgreSQL 8.4 stöds standardfönsterfunktionerna, så förvänta dig att det andra exemplet också fungerar för PostgreSQL.

Uppdatering: SQLite har lagt till stöd för fönsterfunktioner i version 3.25.0 den 2018-09-15 så båda formerna fungerar även i SQLite.



  1. Migrera från Postgres till SQL Server 2008

  2. Hur lägger man till en auto-inkrementerande primärnyckel till en befintlig tabell, i PostgreSQL?

  3. MySQL-inlärningsväg

  4. MariaDB strängfunktioner (fullständig lista)