V tem priročniku vas bomo popeljali skozi različne metode in tehnike, ki jih lahko uporabimo za izbiro najnovejšega zapisa iz tabele na podlagi datuma.
Vzorčni podatki
Za predstavitvene namene uporabljamo vzorčno bazo podatkov Sakila, ki je na voljo za različici MySQL in PostgreSQL.
Prenesite in uvozite vzorčno zbirko podatkov na svoj strežnik. Po potrebi lahko uporabite tudi kateri koli drug nabor podatkov.
Primer 1: NAROČI PO
Najosnovnejša in najpreprostejša metoda, ki jo lahko uporabimo za pridobivanje najnovejšega zapisa po datumu, je uporaba klavzule SQL ORDER BY.
Zapise lahko razvrstimo v padajočem vrstnem redu glede na vrednost datuma in nato omejimo rezultat na samo eno vrstico.
Vzemimo za primer tabelo najemnin iz vzorčne zbirke podatkov Sakila. Vsebuje stolpec »rental_date«, ki označuje datum, ko je bil film izposojen.
To lahko uporabimo za prikaz uporabe klavzule ORDER BY za pridobitev najnovejšega zapisa iz tabele.
IZBERI *
IZ najema
NAROČITE PO rental_date DESC
OMEJITEV 1 ;
V tem primeru uporabimo klavzulo ORDER BY in posredujemo »rental_date« kot ciljni stolpec. Zagotavljamo tudi, da bazi podatkov povemo, naj razvrsti zapise v padajočem vrstnem redu.
Končno omejimo tudi število izhodnih zapisov, ki naj vrnejo zadnjo vrstico iz tabele.
2. primer: uporaba funkcije Max().
Ali ste vedeli, da lahko uporabimo funkcijo max() za datumske vrednosti? Da, uporabimo lahko preprosto podpoizvedbo SQL in funkcijo max() za datumske vrednosti, da pridobimo najnovejši zapis iz dane tabele.
Razmislite o naslednjem primeru:
IZBERI *IZ najema
WHERE datum_najema = (SELECT MAX(datum_najema) FROM najem);
S pomočjo podpoizvedbe najde najdaljši datum najema iz tabele. V glavni poizvedbi bi morali pridobiti zapise z »rental_date«, ki je enak največjemu datumu.
Primer 3: Funkcije oken
Za baze podatkov, ki podpirajo okenske funkcije, lahko uporabimo podpoizvedbo in funkcijo row_number(), da pridobimo najnovejši zapis iz tabele, kot sledi:
IZBERI *OD (
IZBERI *,
ROW_NUMBER() NAD ( NAROČITE BY rental_date DESC) AS rn
IZ najema
) AS podpoizvedba
KJE rn = 1 ;
V danem primeru podpoizvedba vsaki vrstici dodeli številko vrstice na podlagi stolpca »rental_date« v padajočem vrstnem redu z uporabo okenske funkcije ROW_NUMBER().
Zunanja poizvedba nato izbere vse stolpce iz podpoizvedbe, kjer je številka vrstice 1, in dejansko izbere najnovejše zapise o najemu.
Zaključek
V tej objavi smo raziskali različne metode in tehnike, ki jih lahko uporabimo za pridobitev najnovejšega zapisa na podlagi datuma.