Velg den nyeste posten etter dato i SQL

Velg Den Nyeste Posten Etter Dato I Sql



Når du arbeider i en SQL-database, kan du komme over et tilfelle der du trenger å hente den nyeste posten fra en gitt tabell basert på datoen. Dette kan være for paginering, lagerstyring, overvåkingsformål, etc.

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.