V této příručce vás provedeme různými metodami a technikami, které můžeme použít k výběru nejnovějšího záznamu z tabulky na základě data.
Vzorek dat
Pro demonstrační účely používáme ukázkovou databázi Sakila, která je k dispozici pro varianty MySQL a PostgreSQL.
Neváhejte si stáhnout a importovat ukázkovou databázi na váš server. Podle potřeby můžete také použít jakoukoli jinou datovou sadu.
Příklad 1: OBJEDNAT PODLE
Nejzákladnější a nejjednodušší metodou, kterou můžeme použít k načtení nejnovějšího záznamu podle data, je použití klauzule SQL ORDER BY.
Záznamy můžeme seřadit v sestupném pořadí na základě hodnoty data a pak omezit výsledek pouze na jeden řádek.
Vezměte si například tabulku pronájmu ze vzorové databáze Sakila. Obsahuje sloupec „datum_pronájmu“, který označuje datum, kdy byl film vypůjčen.
Můžeme to použít k demonstraci použití klauzule ORDER BY k načtení nejnovějšího záznamu z tabulky.
VYBRAT *
Z půjčovny
OBJEDNAT BY rental_date DESC
OMEZIT 1 ;
V tomto případě použijeme klauzuli ORDER BY a předáme „datum_nájmu“ jako cílový sloupec. Zajistíme také, že sdělíme databázi, aby seřadila záznamy v sestupném pořadí.
Nakonec také omezíme počet výstupních záznamů, které by měly vrátit nejnovější řádek z tabulky.
Příklad 2: Použití funkce Max().
Věděli jste, že na hodnoty data můžeme použít funkci max()? Ano, můžeme použít jednoduchý poddotaz SQL a funkci max() na hodnoty data k načtení nejnovějšího záznamu z dané tabulky.
Zvažte následující příklad:
VYBRAT *Z půjčovny
WHERE datum_pronajmu = (SELECT MAX(datum_pronajmu) FROM vypůjčení);
Pomocí dílčího dotazu se z tabulky zjistí maximální datum pronájmu. V hlavním dotazu bychom měli načíst záznamy s „datum_nájmu“ rovným maximálnímu datu.
Příklad 3: Funkce okna
U databází, které podporují funkce okna, můžeme použít poddotaz a funkci row_number() k načtení nejnovějšího záznamu z tabulky následovně:
VYBRAT *Z (
VYBERTE *,
ŘÁDEK_NUMBER() PŘES ( OBJEDNAT BY pronájem_datum DESC) AS rn
Z půjčovny
) AS dílčí dotaz
KDE rn = 1 ;
V daném příkladu dílčí dotaz přiřadí každému řádku číslo řádku na základě sloupce „datum_nájmu“ v sestupném pořadí pomocí funkce okna ROW_NUMBER().
Vnější dotaz pak vybere všechny sloupce z poddotazu, kde je číslo řádku 1, a efektivně vybere nejnovější záznam(y) pronájmu.
Závěr
V tomto příspěvku jsme prozkoumali různé metody a techniky, které můžeme použít k načtení nejnovějšího záznamu na základě data.