Clause SQL FETCH

Comment limiter les résultats des requêtes pour les bases de données DB2 ?

Il existe deux façons de limiter le résultat.

  1. LIMIT / OFFSET
  2. FETCH FIRST

Pourquoi avons-nous besoin de limiter les résultats de la requête ?

Supposons que vous écriviez une application qui nécessite des informations uniquement sur les 10 étudiants ayant obtenu les notes totales les plus élevées. Pour renvoyer uniquement les lignes de la table Students pour ces 20 étudiants, cela peut être réalisé par la clause FETCH FIRST ou LIMIT.

De plus, cette clause est utile sur les grandes tables avec des milliers d’enregistrements. Le renvoi d’un grand nombre d’enregistrements peut avoir un impact sur les performances.

Clause d’extraction DB2 :

La clause Fetch permet de limiter le nombre de lignes renvoyées par la requête.

Syntaxe:

SELECT select_list FROM nom_table 
  OFFSET n ROWS
  FETCH {FIRST | NEXT } m {ROW | ROWS} ONLY

Où,

  • ‘n’ est le nombre de lignes à ignorer.
  • ‘m’ est le nombre de lignes à retourner. FIRST et NEXT, ROW et ROWS sont respectivement interchangeables. Ils sont utilisés à des fins sémantiques.

Base de données DB2 :

Vous trouverez ci-dessous une sélection de la table “Produit” de la base de données DB2.

ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200
7006STYLO7.451074,50
7007Lecteur CDAccessoires75,00
7008MicroAccessoires75,00

Exemple 1:

La requête SQL suivante utilise la clause FETCH pour obtenir les 4 premiers produits de la table “Produits”.

SELECT *
FROM Produit
  FETCH FIRST 4 ROWS ONLY;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7001SourisAccessoires75,00
7002Disque dur65,00201 300
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00

Exemple 2 :

Pour ignorer les 2 premiers produits et retourner les 3 produits suivants, nous utilisons la clause FETCH OFFSET comme suit :

SELECT *
  FROM Produit
  OFFSET 2 ROWS
  FETCH NEXT 3 ROWS ONLY;
Résultat:
ID-ProduitNom-ProduitCategoriePrixStockValeur-Totale
7003ClavierAccessoires36.00331 118,00
7004RAMComposants23.5016376,00
7005VTTvélos1 200