Maison >base de données >tutoriel mysql >Comment puis-je sélectionner efficacement l'ID avec la date maximale pour chaque catégorie dans PostgreSQL à l'aide de DISTINCT ON ?
Utilisation de DISTINCT ON pour sélectionner l'identifiant avec la date maximale regroupée par catégorie dans PostgreSQL
Pour sélectionner l'identifiant avec la date maximale dans chaque catégorie, Postgres propose une fonctionnalité puissante appelée DISTINCT ON. Vous trouverez ci-dessous la requête permettant d'y parvenir :
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
DISTINCT ON différencie les lignes en fonction d'une colonne spécifiée et les lignes suivantes sont filtrées en fonction de l'ordre de tri. En classant les lignes par ordre décroissant de date au sein de chaque catégorie, DISTINCT ON fournit la date maximale pour chaque catégorie.
Attention : Assurez-vous que la colonne de date n'est pas NULL, car des valeurs NULL peuvent affecter l’ordre de tri. Si nécessaire, vous pouvez ajouter NULLS LAST pour gérer les valeurs NULL.
DISTINCT ON offre simplicité et efficacité. Ses performances sont particulièrement efficaces pour les ensembles de données plus petits. Pour les ensembles de données plus volumineux comportant de nombreuses lignes par catégorie, des approches alternatives peuvent être plus appropriées, telles que celles mentionnées dans la section « Questions liées au dépassement de pile ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!