W tym przewodniku przeprowadzimy Cię przez różne metody i techniki, których możemy użyć do wybrania najnowszego rekordu z tabeli na podstawie daty.
Przykładowe dane
W celach demonstracyjnych korzystamy z przykładowej bazy danych Sakila, która jest dostępna dla wersji MySQL i PostgreSQL.
Zachęcamy do pobrania i zaimportowania przykładowej bazy danych na swój serwer. W razie potrzeby możesz także użyć dowolnego innego zestawu danych.
Przykład 1: ZAMÓW PRZEZ
Najbardziej podstawową i najprostszą metodą, której możemy użyć do pobrania najnowszego rekordu według daty, jest użycie klauzuli SQL ORDER BY.
Możemy uporządkować rekordy w kolejności malejącej na podstawie wartości daty, a następnie ograniczyć wynik do tylko jednego wiersza.
Weźmy na przykład tabelę wynajmu z przykładowej bazy danych Sakila. Zawiera kolumnę „data_wypożyczenia”, która oznacza datę wypożyczenia filmu.
Możemy to wykorzystać, aby zademonstrować, jak używać klauzuli ORDER BY do pobierania najnowszego rekordu z tabeli.
WYBIERAĆ *
Z wynajmu
ZAMÓWIENIE BY data_wypożyczenia DESC
LIMIT 1 ;
W tym przypadku używamy klauzuli ORDER BY i jako kolumnę docelową przekazujemy „data_wypożyczenia”. Zapewniamy również, że poinformujemy bazę danych, aby uporządkowała rekordy w kolejności malejącej.
Na koniec ograniczamy także liczbę rekordów wyjściowych, które powinny zwrócić najnowszy wiersz z tabeli.
Przykład 2: Użycie funkcji Max().
Czy wiesz, że możemy używać funkcji max() na wartościach dat? Tak, możemy użyć prostego podzapytania SQL i funkcji max() na wartościach dat, aby pobrać najnowszy rekord z danej tabeli.
Rozważ następujący przykład:
WYBIERAĆ *Z wynajmu
GDZIE data_wypożyczenia = (WYBIERZ MAX(data_wypożyczenia) Z wypożyczenia);
Użycie podzapytania pozwala znaleźć maksymalny termin wynajmu z tabeli. W zapytaniu głównym powinniśmy pobrać rekordy z datą „rental_date” równą dacie maksymalnej.
Przykład 3: Funkcje okna
W przypadku baz danych obsługujących funkcje okna możemy użyć podzapytania i funkcji row_number() w celu pobrania najnowszego rekordu z tabeli w następujący sposób:
WYBIERAĆ *Z (
WYBIERAĆ *,
ROW_NUMBER() PONAD ( ZAMÓWIENIE BY data_wypożyczenia DESC) AS rn
Z wynajmu
) Podzapytanie AS
GDZIE rn = 1 ;
W podanym przykładzie podzapytanie przypisuje numer wiersza do każdego wiersza na podstawie kolumny „data_wypożyczenia” w kolejności malejącej przy użyciu funkcji okienkowej ROW_NUMBER().
Następnie zewnętrzne zapytanie wybiera wszystkie kolumny z podzapytania, w którym numer wiersza wynosi 1, skutecznie wybierając najnowszy(e) rekord(y) wypożyczenia.
Wniosek
W tym poście omówiliśmy różne metody i techniki, których możemy użyć do pobrania najnowszego rekordu na podstawie daty.