web-dev-qa-db-fra.com

Comment limiter les lignes dans PostgreSQL SELECT

Quel est l'équivalent de TOP de SQL Server ou FETCH FIRST De DB2 ou LIMIT de mySQL dans PostgreSQL?

39
Dan Mertz

Vous pouvez utiliser LIMIT comme dans MySQL, par exemple:

SELECT * FROM users LIMIT 5;
65
Sinan Taifour

Vous pouvez toujours ajouter la clause OFFSET avec la clause LIMIT.

Vous devrez peut-être récupérer un ensemble d'enregistrements à partir d'un décalage particulier. Voici un exemple qui récupère 3 enregistrements à partir de la 3e position:

testdb=# SELECT * FROM COMPANY LIMIT 3 OFFSET 2;

Cela produirait le résultat suivant:

 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000

Des explications complètes et d'autres exemples sont disponibles ICI

15
mongotop

Utilisez la clause LIMIT .

4
Hosam Aly

Sur PostgreSQL, il existe deux façons d'atteindre cet objectif.

SQL Standard

La première option consiste à utiliser la méthode standard SQL: 2008 pour limiter un jeu de résultats à l'aide de FETCH FIRST N ROWS ONLY syntaxe:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
FETCH FIRST 50 ROWS ONLY

La syntaxe standard SQL: 2008 est prise en charge depuis PostgreSQL 8.4.

PostgreSQL 8.3 ou version antérieure

Pour PostgreSQL 8.3 ou versions antérieures, vous devez utiliser la clause LIMIT pour limiter la taille du jeu de résultats:

SELECT
    title
FROM
    post
ORDER BY
    id DESC
LIMIT 50

Pour plus de détails sur ce sujet, consultez cet article .

1
Vlad Mihalcea

En dehors de la limite, vous pouvez également utiliser Fetch First. Votre question avait déjà la réponse

Select * from users FETCH FIRST 5 ROWS ONLY
1
Sarath