Sélectionnez l'enregistrement le plus récent par date dans SQL

Selectionnez L Enregistrement Le Plus Recent Par Date Dans Sql



Lorsque vous travaillez dans une base de données SQL, vous pouvez rencontrer un cas dans lequel vous devez récupérer l'enregistrement le plus récent d'une table donnée en fonction de la date. Cela peut être à des fins de pagination, de gestion des stocks, de suivi, etc.

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.