Pour déterminer l'identifiant avec la date maximale pour chaque catégorie dans une table, PostgreSQL propose une approche appropriée. Considérons les exemples de données :
id | category | date |
---|---|---|
1 | a | 2013-01-01 |
2 | b | 2013-01-03 |
3 | c | 2013-01-02 |
4 | a | 2013-01-02 |
5 | b | 2013-01-02 |
6 | c | 2013-01-03 |
7 | a | 2013-01-03 |
8 | b | 2013-01-01 |
9 | c | 2013-01-01 |
Pour obtenir le résultat souhaité, nous pouvons utiliser la clause DISTINCT ON de PostgreSQL. Cette clause nous permet de sélectionner des lignes uniques en fonction d'une expression spécifiée, en regroupant les résultats par une autre colonne. Dans ce cas, nous regrouperons les lignes par catégorie et sélectionnerons l'identifiant distinct avec la date maximale au sein de chaque groupe.
Voici la requête pour accomplir cela :
SELECT DISTINCT ON (category) id -- , category, date -- any other column (expression) from the same row FROM tbl ORDER BY category, date DESC;
La clause DISTINCT ON garantit que seule la première occurrence de chaque valeur de catégorie distincte est sélectionnée. La clause ORDER BY trie les résultats d'abord par catégorie en ordre croissant (ordre alphabétique) puis par date en ordre décroissant. Cet ordre garantit que la ligne avec la dernière date pour chaque catégorie apparaît en premier.
L'exécution de cette requête donnera le résultat suivant :
id |
---|
7 |
2 |
6 |
Ces identifiants (7, 2, 6) représentent les dates maximales pour les catégories a, b et c, respectivement.
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!