Dans ce guide, nous vous présenterons les différentes méthodes et techniques que nous pouvons utiliser pour sélectionner l'enregistrement le plus récent dans un tableau en fonction de la date.
Exemples de données
À des fins de démonstration, nous utilisons l'exemple de base de données Sakila disponible pour les versions MySQL et PostgreSQL.
N'hésitez pas à télécharger et importer la base de données exemple sur votre serveur. Vous pouvez également utiliser n’importe quel autre ensemble de données, le cas échéant.
Exemple 1 : COMMANDER PAR
La méthode la plus basique et la plus simple que nous pouvons utiliser pour récupérer l'enregistrement le plus récent par date consiste à utiliser une clause SQL ORDER BY.
Nous pouvons trier les enregistrements par ordre décroissant en fonction de la valeur de la date, puis limiter le résultat à une seule ligne.
Prenons par exemple la table de location de la base de données exemple Sakila. Il contient la colonne « rental_date » qui indique la date à laquelle un film a été loué.
Nous pouvons utiliser ceci pour montrer comment utiliser la clause ORDER BY pour récupérer l'enregistrement le plus récent de la table.
SÉLECTIONNER *
DE la location
COMMANDE PAR date_location DESC
LIMITE 1 ;
Dans ce cas, nous utilisons la clause ORDER BY et passons la « date_location » comme colonne cible. Nous veillons également à indiquer à la base de données de classer les enregistrements par ordre décroissant.
Enfin, nous limitons également le nombre d'enregistrements de sortie qui doivent renvoyer la ligne la plus récente de la table.
Exemple 2 : Utilisation de la fonction Max()
Saviez-vous que nous pouvons utiliser la fonction max() sur les valeurs de date ? Oui, nous pouvons utiliser une simple sous-requête SQL et la fonction max() sur les valeurs de date pour récupérer l'enregistrement le plus récent d'une table donnée.
Prenons l'exemple suivant :
SÉLECTIONNER *DE la location
OÙ location_date = (SELECT MAX(rental_date) FROM location);
L'utilisation de la sous-requête permet de trouver la date de location maximale dans la table. Dans la requête principale, nous devons récupérer les enregistrements avec un « rental_date » égal à la date maximale.
Exemple 3 : fonctions de fenêtre
Pour les bases de données prenant en charge les fonctions de fenêtre, nous pouvons utiliser une sous-requête et une fonction row_number() pour récupérer l'enregistrement le plus récent de la table comme suit :
SÉLECTIONNER *DEPUIS (
SÉLECTIONNER *,
ROW_NUMBER() PLUS DE ( COMMANDE PAR date_location DESC) AS rn
DE la location
) AS sous-requête
OÙ rn = 1 ;
Dans l'exemple donné, la sous-requête attribue un numéro de ligne à chaque ligne en fonction de la colonne « rental_date » par ordre décroissant à l'aide de la fonction de fenêtre ROW_NUMBER().
La requête externe sélectionne ensuite toutes les colonnes de la sous-requête dont le numéro de ligne est 1, sélectionnant ainsi le ou les enregistrements de location les plus récents.
Conclusion
Dans cet article, nous avons exploré les différentes méthodes et techniques que nous pouvons utiliser pour récupérer l'enregistrement le plus récent en fonction d'une date.