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