SQL Sélection du nombre spécifié d'enregistrements


Exemple

Le standard SQL 2008 définit la clause FETCH FIRST pour limiter le nombre d'enregistrements renvoyés.

SELECT Id, ProductName, UnitPrice, Package 
FROM Product 
ORDER BY UnitPrice DESC
FETCH FIRST 10 ROWS ONLY

Cette norme est uniquement prise en charge dans les versions récentes de certains RDMS. La syntaxe non standard spécifique au fournisseur est fournie dans d'autres systèmes. Progress OpenEdge 11.x prend également en charge la syntaxe FETCH FIRST <n> ROWS ONLY .

En outre, OFFSET <m> ROWS avant FETCH FIRST <n> ROWS ONLY permet d'ignorer les lignes avant d'extraire les lignes.

SELECT Id, ProductName, UnitPrice, Package 
FROM Product 
ORDER BY UnitPrice DESC
OFFSET 5 ROWS
FETCH FIRST 10 ROWS ONLY

La requête suivante est prise en charge dans SQL Server et MS Access:

SELECT TOP 10 Id, ProductName, UnitPrice, Package
FROM Product
ORDER BY UnitPrice DESC

Pour faire la même chose dans MySQL ou PostgreSQL, le mot-clé LIMIT doit être utilisé:

SELECT Id, ProductName, UnitPrice, Package
FROM Product
ORDER BY UnitPrice DESC
LIMIT 10

Dans Oracle, on peut faire la même chose avec ROWNUM :

SELECT Id, ProductName, UnitPrice, Package
FROM Product
WHERE ROWNUM <= 10
ORDER BY UnitPrice DESC    

Résultats : 10 enregistrements.

Id    ProductName               UnitPrice             Package
38    Côte de Blaye             263.50                12 - 75 cl bottles
29    Thüringer Rostbratwurst   123.79                50 bags x 30 sausgs.
9    Mishi Kobe Niku            97.00                 18 - 500 g pkgs.
20    Sir Rodney's Marmalade    81.00                 30 gift boxes
18    Carnarvon Tigers          62.50                 16 kg pkg.
59    Raclette Courdavault      55.00                 5 kg pkg.
51    Manjimup Dried Apples     53.00                 50 - 300 g pkgs.
62    Tarte au sucre            49.30                 48 pies
43    Ipoh Coffee               46.00                 16 - 500 g tins
28    Rössle Sauerkraut         45.60                 25 - 825 g cans

Vendor Nuances:

Il est important de noter que le TOP de Microsoft SQL fonctionne après la clause WHERE et renverra le nombre de résultats spécifié s’il existe dans la table, tandis que ROWNUM fonctionne dans le cadre de la clause WHERE si d’autres conditions n’existent pas dans la table. nombre spécifié de lignes au début de la table, vous obtiendrez des résultats nuls s’il pouvait y en avoir d’autres à trouver.