sql >> Database teknologi >  >> RDS >> PostgreSQL

Vælg poster baseret på sidste dato

I PostgreSQL, for at få unikke rækker til et defineret sæt af kolonner , den foretrukne teknik er generelt DISTINCT ON :

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

Du får nøjagtig én række efter ID på denne måde - den med den seneste kendte "Course Date" og den første "Course Name" (ifølge sorteringsrækkefølge) i tilfælde af uafgjort på datoen.

Du kan droppe NULLS LAST hvis din kolonne er defineret NOT NULL .

For at få unikke rækker pr. ("ID", "Course Name") :

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

Detaljer i dette relaterede svar:



  1. Hvordan tæller jeg MySQL(*) i Doctrine2?

  2. Valg af et SQL Server-overvågningsværktøj, der passer til dine behov

  3. Fejl:Ukendt kolonne '' i 'feltliste' MySQL fejl

  4. Problem med uploadstørrelse i PHP og MySql