U ovom vodiču provest ćemo vas kroz različite metode i tehnike koje možemo koristiti za odabir najnovijeg zapisa iz tablice na temelju datuma.
Uzorak podataka
U svrhu demonstracije koristimo Sakila uzorak baze podataka koji je dostupan za MySQL i PostgreSQL verzije.
Slobodno preuzmite i uvezite oglednu bazu podataka na svoj poslužitelj. Također možete koristiti bilo koji drugi skup podataka prema potrebi.
Primjer 1: ORDER BY
Najosnovnija i najjednostavnija metoda koju možemo koristiti za dohvaćanje najnovijeg zapisa prema datumu je korištenje SQL klauzule ORDER BY.
Zapise možemo poredati silaznim redoslijedom na temelju vrijednosti datuma, a zatim ograničiti rezultat na samo jedan redak.
Uzmimo za primjer tablicu za najam iz uzorka baze podataka Sakila. Sadrži stupac 'rental_date' koji označava datum na koji je film iznajmljen.
Ovo možemo iskoristiti da pokažemo kako koristiti klauzulu ORDER BY za dohvaćanje najnovijeg zapisa iz tablice.
IZABERI *
OD najma
NARUDŽBA PREMA rental_date DESC
OGRANIČITI 1 ;
U ovom slučaju koristimo klauzulu ORDER BY i prosljeđujemo 'rental_date' kao ciljni stupac. Također osiguravamo da kažemo bazi podataka da rasporedi zapise silaznim redoslijedom.
Konačno, također ograničavamo broj izlaznih zapisa koji bi trebali vratiti najnoviji red iz tablice.
Primjer 2: Korištenje funkcije Max().
Jeste li znali da možemo koristiti funkciju max() za datumske vrijednosti? Da, možemo koristiti jednostavan SQL podupit i funkciju max() na datumskim vrijednostima za dohvaćanje najnovijeg zapisa iz dane tablice.
Razmotrite sljedeći primjer:
IZABERI *OD najma
WHERE datum_iznajmljivanja = (SELECT MAX(datum_iznajmljivanja) FROM najam);
Pomoću podupita nalazi se maksimalni datum najma iz tablice. U glavnom upitu trebali bismo dohvatiti zapise s 'rental_date' jednakim maksimalnom datumu.
Primjer 3: Funkcije prozora
Za baze podataka koje podržavaju funkcije prozora, možemo koristiti podupit i funkciju row_number() za dohvaćanje najnovijeg zapisa iz tablice na sljedeći način:
IZABERI *OD (
IZABERI *,
ROW_NUMBER() PREKO ( NARUDŽBA PO rental_date DESC) AS rn
OD najma
) AS podupit
GDJE rn = 1 ;
U navedenom primjeru podupit dodjeljuje broj retka svakom retku na temelju stupca 'rental_date' silaznim redoslijedom pomoću prozorske funkcije ROW_NUMBER().
Vanjski upit tada odabire sve stupce iz podupita gdje je broj retka 1, čime se zapravo odabiru najnoviji zapisi o najmu.
Zaključak
U ovom smo postu istražili različite metode i tehnike koje možemo koristiti za dohvaćanje najnovijeg zapisa na temelju datuma.