Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar a enésima linha em uma tabela de banco de dados SQL?


Existem maneiras de fazer isso em partes opcionais do padrão, mas muitos bancos de dados suportam sua própria maneira de fazer isso.

Um site muito bom que fala sobre isso e outras coisas é o http://troels. arvin.dk/db/rdbms/#select-limit .

Basicamente, PostgreSQL e MySQL suportam o não padrão:
SELECT...
LIMIT y OFFSET x 

Oracle, DB2 e MSSQL suportam as funções de janela padrão:
SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
    columns
  FROM tablename
) AS foo
WHERE rownumber <= n

(que acabei de copiar do site vinculado acima, pois nunca uso esses bancos de dados)

Atualização: A partir do PostgreSQL 8.4, as funções de janela padrão são suportadas, portanto, espere que o segundo exemplo funcione também para o PostgreSQL.

Atualização: O SQLite adicionou suporte a funções de janela na versão 3.25.0 em 15/09/2018 para que ambos os formulários também funcionem no SQLite.