Ebben az útmutatóban végigvezetjük a különféle módszereken és technikákon, amelyek segítségével a dátum alapján kiválaszthatjuk a legutóbbi rekordot egy táblázatból.
Minta adat
Demonstrációs célokra a Sakila mintaadatbázist használjuk, amely elérhető a MySQL és PostgreSQL ízekhez.
Nyugodtan töltse le és importálja a mintaadatbázist a szerverére. Szükség szerint bármilyen más adatkészletet is használhat.
1. példa: MEGRENDELÉS
A legalapvetőbb és legegyszerűbb módszer, amellyel a legfrissebb rekordot lekérhetjük dátum szerint, egy SQL ORDER BY záradék használata.
A rekordokat a dátumérték alapján csökkenő sorrendbe rendezhetjük, majd az eredményt csak egy sorra korlátozhatjuk.
Vegyük például a bérleti táblázatot a Sakila mintaadatbázisból. Ez tartalmazza a „rental_date” oszlopot, amely a film kölcsönzésének dátumát jelöli.
Ezzel bemutathatjuk, hogyan használhatjuk az ORDER BY záradékot a legutóbbi rekord lekéréséhez a táblából.
KIVÁLASZTÁS *
bérlettől
RENDELÉS BY rental_date DESC
HATÁR 1 ;
Ebben az esetben az ORDER BY záradékot használjuk, és a „bérlés_dátuma” értéket adjuk meg céloszlopként. Gondoskodunk arról is, hogy közöljük az adatbázissal, hogy a rekordokat csökkenő sorrendben rendezze.
Végül korlátozzuk azon kimeneti rekordok számát is, amelyeknek a tábla legfrissebb sorát kell visszaadniuk.
2. példa: A Max() függvény használata
Tudtad, hogy használhatjuk a max() függvényt a dátumértékeknél? Igen, használhatunk egy egyszerű SQL segédlekérdezést és a max() függvényt a dátumértékeken, hogy lekérjük a legutóbbi rekordot egy adott táblából.
Tekintsük a következő példát:
KIVÁLASZTÁS *bérlettől
WHERE bérleti_dátum = (SELECT MAX(bérlés_dátum) FROM bérlés);
Az allekérdezés segítségével megkeresi a táblázatból a maximális kölcsönzési dátumot. A fő lekérdezésben azokat a rekordokat kell lekérnünk, amelyeknél a „bérlés_dátuma” megegyezik a maximális dátummal.
3. példa: Ablakfunkciók
Az ablak függvényeket támogató adatbázisok esetén használhatunk egy subquery és row_number() függvényt a legutóbbi rekord lekéréséhez a táblából az alábbiak szerint:
KIVÁLASZTÁS *TÓL TŐL (
KIVÁLASZTÁS *,
ROW_NUMBER() VÉGE ( RENDELÉS BY rental_date DESC) AS rn
bérlettől
) AS segédlekérdezés
WHERE rn = 1 ;
Az adott példában az allekérdezés minden sorhoz egy sorszámot rendel a „bérlés_dátuma” oszlop alapján, csökkenő sorrendben a ROW_NUMBER() ablakfüggvénnyel.
A külső lekérdezés ezután kiválasztja az összes olyan oszlopot az allekérdezésből, ahol a sorszám 1, így gyakorlatilag kiválasztja a legutóbbi bérleti rekord(oka)t.
Következtetés
Ebben a bejegyzésben feltártuk azokat a különféle módszereket és technikákat, amelyek segítségével lekérhetjük a legfrissebb rekordot egy dátum alapján.