Atlasiet jaunāko ierakstu pēc datuma SQL

Atlasiet Jaunako Ierakstu Pec Datuma Sql



Strādājot SQL datu bāzē, iespējams, saskarsities ar gadījumu, kad jums ir jāizgūst jaunākais ieraksts no noteiktas tabulas, pamatojoties uz datumu. Tas var būt lappušu izvietošanai, krājumu pārvaldībai, uzraudzības nolūkiem utt.

Š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.