PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Sélectionner les enregistrements en fonction de la dernière date

Dans PostgreSQL, pour obtenir des lignes uniques pour un ensemble défini de colonnes , la technique préférable est généralement DISTINCT ON :

SELECT DISTINCT ON ("ID") *
FROM   "Course"
ORDER  BY "ID", "Course Date" DESC NULLS LAST, "Course Name";

Vous obtenez exactement une ligne par ID de cette façon - celui avec la dernière "Course Date" connue et le premier "Course Name" (selon l'ordre de tri) en cas d'ex aequo sur la date.

Vous pouvez supprimer NULLS LAST si votre colonne est définie NOT NULL .

Pour obtenir des lignes uniques par ("ID", "Course Name") :

SELECT DISTINCT ON ("ID", "Course Name") *
FROM   "Course"
ORDER  BY "ID", "Course Name", "Course Date" DESC NULLS LAST;

Détails dans cette réponse connexe :