La clause LIMIT détermine le nombre de lignes renvoyées par votre requête.
Sélectionner les premières lignes :
Renvoie les m premières lignes du résultat, ou tous les enregistrements s’il y en a moins de m.
Syntaxe alternative de TOP (compatible MS SQL Server) :
-- SELECT TOP number|percent column_name(s) FROM table_name
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);
Cela est équivalent à LIMIT m et peut être utilisé pour assurer la compatibilité avec les requêtes de Microsoft SQL Server.
Sélection avec OFFSET :
LIMIT m OFFSET n
-- or equivalently:
LIMIT n, m
Saute les n premières lignes, puis renvoie les m lignes suivantes.
Dans les deux cas, n et m doivent être des entiers non négatifs.
Sélectionnez des lignes depuis la fin de l’ensemble de résultats à l’aide de valeurs négatives :
| Syntaxe | Résultat |
|---|
LIMIT -m | m dernières lignes |
LIMIT -m OFFSET -n | m dernières lignes après avoir ignoré les n dernières lignes |
LIMIT m OFFSET -n | m premières lignes après avoir ignoré les n dernières lignes |
LIMIT -m OFFSET n | m dernières lignes après avoir ignoré les n premières lignes |
La syntaxe LIMIT -n, -m est équivalente à LIMIT -m OFFSET -n.
Utilisez des valeurs décimales comprises entre 0 et 1 pour sélectionner un pourcentage de lignes :
| Syntaxe | Résultat |
|---|
LIMIT 0.1 | Les 10 % premières lignes |
LIMIT 1 OFFSET 0.5 | La ligne médiane |
LIMIT 0.25 OFFSET 0.5 | Troisième quartile (25 % des lignes après avoir ignoré les 50 % premières lignes) |
- Les fractions doivent être des valeurs Float64 supérieures à 0 et inférieures à 1.
- Les nombres de lignes fractionnaires sont arrondis à l’entier supérieur.
Combiner différents types de LIMIT
Vous pouvez combiner des entiers standard avec des OFFSET fractionnaires ou négatifs :
LIMIT 10 OFFSET 0.5 -- 10 rows starting from the halfway point
LIMIT 10 OFFSET -20 -- 10 rows after skipping the last 20
Le modificateur WITH TIES inclut des lignes supplémentaires ayant les mêmes valeurs ORDER BY que la dernière ligne incluse dans la limite.
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
Avec WITH TIES, toutes les lignes ayant la même valeur que la dernière sont incluses :
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
La ligne 6 est incluse, car elle a la même valeur (2) que la ligne 5.
Le même principe s’applique lorsque le OFFSET est indiqué avec le mot-clé OFFSET :
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
Si l’on ignore les 2 premières lignes et que l’on en prend 3, le résultat serait normalement 1, 1, 2, mais le deuxième 2 est inclus car il est ex æquo avec la dernière ligne.
WITH TIES n’est pas pris en charge avec des valeurs négatives de LIMIT.
Ce modificateur peut être combiné avec le modificateur ORDER BY ... WITH FILL.
Résultats non déterministes : Sans clause ORDER BY, les lignes renvoyées peuvent être choisies de manière arbitraire et varier d’une exécution de requête à l’autre.
Limite côté serveur : Le nombre de lignes renvoyées peut également être affecté par le paramètre limit.
- LIMIT BY — Limite le nombre de lignes par groupe de valeurs, utile pour obtenir les résultats top N dans chaque catégorie.