Selectați cea mai recentă înregistrare după dată în SQL

Selectati Cea Mai Recenta Inregistrare Dupa Data In Sql



Când lucrați într-o bază de date SQL, este posibil să întâlniți o instanță în care trebuie să preluați cea mai recentă înregistrare dintr-un tabel dat, pe baza datei. Aceasta poate fi pentru paginare, gestionarea stocurilor, scopuri de monitorizare etc.

În acest ghid, vă vom ghida prin diferitele metode și tehnici pe care le putem folosi pentru a selecta cea mai recentă înregistrare dintr-un tabel în funcție de dată.

Eșantion de date

În scopuri demonstrative, folosim baza de date eșantion Sakila care este disponibilă pentru aromele MySQL și PostgreSQL.







Simțiți-vă liber să descărcați și să importați baza de date eșantion pe serverul dvs. De asemenea, puteți utiliza orice alt set de date, după caz.



Exemplul 1: ORDER BY

Cea mai simplă și simplă metodă pe care o putem folosi pentru a prelua cea mai recentă înregistrare după dată este să folosim o clauză SQL ORDER BY.



Putem ordona înregistrările într-o ordine descrescătoare pe baza valorii datei și apoi limităm rezultatul la un singur rând.





Luați de exemplu tabelul de închiriere din baza de date de mostre Sakila. Conține coloana „dată_închiriere” care indică data la care a fost închiriat un film.

Putem folosi acest lucru pentru a demonstra cum să folosiți clauza ORDER BY pentru a prelua cea mai recentă înregistrare din tabel.



SELECTAȚI *

DE la inchiriere

ORDIN PRIN data_închirierea DESC

LIMITĂ 1 ;

În acest caz, folosim clauza ORDER BY și trecem „data_închirierea” ca coloană țintă. De asemenea, ne asigurăm să spunem bazei de date să ordoneze înregistrările în ordine descrescătoare.

În cele din urmă, limităm și numărul de înregistrări de ieșire care ar trebui să returneze cel mai recent rând din tabel.

Exemplul 2: Utilizarea funcției Max().

Știați că putem folosi funcția max() pe valorile datei? Da, putem folosi o simplă subinterogare SQL și funcția max() pentru valorile date pentru a prelua cea mai recentă înregistrare dintr-un tabel dat.

Luați în considerare următorul exemplu:

SELECTAȚI *

DE la inchiriere

WHERE data_închirierea = (SELECT MAX(data_închirierea) FROM închiriere);

Folosind subinterogarea, se găsește data maximă de închiriere din tabel. În interogarea principală, ar trebui să preluăm înregistrările cu „dată_închiriere” egală cu data maximă.

Exemplul 3: Funcțiile ferestrei

Pentru bazele de date care acceptă funcțiile ferestrei, putem folosi o subinterogare și o funcție row_number() pentru a prelua cea mai recentă înregistrare din tabel, după cum urmează:

SELECTAȚI *

DE LA (

SELECTAȚI *,

ROW_NUMBER() Peste ( ORDIN PRIN data_închirierea DESC) AS rn

DE la inchiriere

) subinterogare AS

UNDE rn = 1 ;

În exemplul dat, subinterogarea atribuie un număr de rând fiecărui rând pe baza coloanei „dată_închiriere” în ordine descrescătoare folosind funcția de fereastră ROW_NUMBER().

Interogarea exterioară selectează apoi toate coloanele din subinterogare unde numărul rândului este 1, selectând efectiv cea mai recentă înregistrare(e) de închiriere.

Concluzie

În această postare, am explorat diferitele metode și tehnici pe care le putem folosi pentru a obține cea mai recentă înregistrare pe baza unei date.