Šajā rokasgrāmatā mēs iepazīstināsim jūs ar dažādām metodēm un paņēmieniem, ko varam izmantot, lai atlasītu jaunāko ierakstu no tabulas, pamatojoties uz datumu.
Datu paraugi
Demonstrācijas nolūkos mēs izmantojam Sakila paraugu datubāzi, kas ir pieejama MySQL un PostgreSQL garšām.
Jūtieties brīvi lejupielādēt un importēt datu bāzes paraugu savā serverī. Ja nepieciešams, varat izmantot arī jebkuru citu datu kopu.
1. piemērs: PASŪTĪT
Visvienkāršākā un vienkāršākā metode, ko varam izmantot, lai izgūtu jaunāko ierakstu pēc datuma, ir izmantot klauzulu SQL ORDER BY.
Mēs varam pasūtīt ierakstus dilstošā secībā, pamatojoties uz datuma vērtību, un pēc tam ierobežot rezultātu līdz vienai rindai.
Ņemiet, piemēram, nomas tabulu no Sakila paraugu datu bāzes. Tajā ir kolonna “rental_date”, kas apzīmē datumu, kurā filma tika nomāta.
Mēs varam to izmantot, lai parādītu, kā izmantot klauzulu ORDER BY, lai izgūtu jaunāko ierakstu no tabulas.
ATLASĪT*
NO nomas
PASŪTĪT BY rental_date DESC
LIMIT 1 ;
Šajā gadījumā mēs izmantojam klauzulu ORDER BY un kā mērķa kolonnu nododam “rental_date”. Mēs arī nodrošinām, ka datubāzei tiek norādīts, ka ieraksti ir jāsakārto dilstošā secībā.
Visbeidzot, mēs ierobežojam arī to izvades ierakstu skaitu, kuriem jāatgriež pēdējā tabulas rinda.
2. piemērs: funkcijas Max() izmantošana
Vai zinājāt, ka datuma vērtībām varam izmantot funkciju max()? Jā, mēs varam izmantot vienkāršu SQL apakšvaicājumu un funkciju max() datuma vērtībām, lai izgūtu jaunāko ierakstu no dotās tabulas.
Apsveriet šādu piemēru:
ATLASĪT*NO nomas
WHERE nomas_datums = (SELECT MAX(nomes_datums) NO nomas);
Izmantojot apakšvaicājumu, tabulā tiek atrasts maksimālais nomas datums. Galvenajā vaicājumā mums vajadzētu iegūt ierakstus ar “rental_date”, kas vienāds ar maksimālo datumu.
3. piemērs: Logu funkcijas
Datu bāzēm, kas atbalsta loga funkcijas, mēs varam izmantot apakšvaicājumu un row_number() funkciju, lai izgūtu jaunāko ierakstu no tabulas šādi:
ATLASĪT*NO (
ATLASĪT*,
ROW_NUMBER() BEIGAS ( PASŪTĪT BY rental_date DESC) AS rn
NO nomas
) AS apakšvaicājums
KUR rn = 1 ;
Dotajā piemērā apakšvaicājums katrai rindai piešķir rindas numuru, pamatojoties uz kolonnu “rental_date”, dilstošā secībā, izmantojot loga funkciju ROW_NUMBER().
Pēc tam ārējais vaicājums atlasa visas kolonnas no apakšvaicājuma, kur rindas numurs ir 1, efektīvi atlasot jaunāko(-os) nomas ierakstu(-us).
Secinājums
Šajā ziņojumā mēs izpētījām dažādas metodes un paņēmienus, ko varam izmantot, lai iegūtu jaunāko ierakstu, pamatojoties uz datumu.