sql >> Database >  >> RDS >> PostgreSQL

Selecteer records op basis van laatste datum

In PostgreSQL, om unieke rijen te krijgen voor een gedefinieerde set kolommen , is de voorkeurstechniek over het algemeen DISTINCT ON :

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

Je krijgt precies één rij per ID op deze manier - degene met de laatst bekende "Course Date" en de eerste "Course Name" (volgens sorteervolgorde) in geval van gelijkspel op de datum.

Je kunt NULLS LAST laten vallen als uw kolom is gedefinieerd NOT NULL .

Om unieke rijen te krijgen per ("ID", "Course Name") :

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

Details in dit gerelateerde antwoord:



  1. Als MYSQL niet hoofdlettergevoelig is, hoe werkt het dan voor het veld Wachtwoord in Inloggen?

  2. De titel van een SQL-kolom wijzigen via een query

  3. Beheerscripts in R12.2 Ebusiness Suite

  4. Is het nodig om een ​​Psycopg2-verbinding aan het einde van een script te sluiten?