I denne veiledningen vil vi lede deg gjennom de ulike metodene og teknikkene som vi kan bruke for å velge den nyeste posten fra en tabell basert på datoen.
Eksempeldata
For demonstrasjonsformål bruker vi Sakila-prøvedatabasen som er tilgjengelig for MySQL- og PostgreSQL-smaker.
Last ned og importer gjerne prøvedatabasen på serveren din. Du kan også bruke et hvilket som helst annet datasett etter behov.
Eksempel 1: BESTILL ETTER
Den mest grunnleggende og enkleste metoden vi kan bruke for å hente den nyeste posten etter dato, er å bruke en SQL ORDER BY-klausul.
Vi kan bestille postene i synkende rekkefølge basert på datoverdien og deretter begrense resultatet til kun én rad.
Ta for eksempel leietabellen fra Sakila-eksempeldatabasen. Den inneholder kolonnen 'rental_date' som angir datoen da en film ble leid.
Vi kan bruke dette til å demonstrere hvordan du bruker ORDER BY-klausulen for å hente den siste posten fra tabellen.
PLUKKE UT *
FRA utleie
REKKEFØLGE BY rental_date DESC
GRENSE 1 ;
I dette tilfellet bruker vi ORDER BY-klausulen og sender 'utleiedato' som målkolonnen. Vi sørger også for å fortelle databasen om å bestille postene i synkende rekkefølge.
Til slutt begrenser vi også antall utdataposter som skal returnere den nyeste raden fra tabellen.
Eksempel 2: Bruk av Max()-funksjonen
Visste du at vi kan bruke max()-funksjonen på datoverdier? Ja, vi kan bruke en enkel SQL-underspørring og max()-funksjonen på datoverdier for å hente den nyeste posten fra en gitt tabell.
Tenk på følgende eksempel:
PLUKKE UT *FRA utleie
WHERE leiedato = (VELG MAX(utleiedato) FRA leie);
Ved å bruke underspørringen finner du den maksimale leiedatoen fra tabellen. I hovedspørringen bør vi hente postene med en 'rental_date' lik maksimumsdatoen.
Eksempel 3: Vindufunksjoner
For databaser som støtter vindusfunksjonene, kan vi bruke en subquery og row_number() funksjon for å hente den nyeste posten fra tabellen som følger:
PLUKKE UT *FRA (
PLUKKE UT *,
ROW_NUMBER() OVER ( REKKEFØLGE BY rental_date DESC) AS rn
FRA utleie
) AS underspørring
HVOR rn = 1 ;
I det gitte eksemplet tilordner underspørringen et radnummer til hver rad basert på kolonnen 'utleiedato' i synkende rekkefølge ved å bruke ROW_NUMBER()-vindusfunksjonen.
Den ytre spørringen velger deretter alle kolonnene fra underspørringen der radnummeret er 1, og velger faktisk den(e) siste leieposten(e).
Konklusjon
I dette innlegget utforsket vi de ulike metodene og teknikkene vi kan bruke for å hente den nyeste posten basert på en dato.