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 ?

Comment puis-je sélectionner efficacement l'ID avec la date maximale pour chaque catégorie dans PostgreSQL à l'aide de DISTINCT ON ?

DDD
DDDoriginal
2024-12-27 17:10:17503parcourir

How Can I Efficiently Select the ID with the Maximum Date for Each Category in PostgreSQL Using 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn