In deze handleiding leiden we u door de verschillende methoden en technieken die we kunnen gebruiken om het meest recente record uit een tabel te selecteren op basis van de datum.
Voorbeeldgegevens
Voor demonstratiedoeleinden gebruiken we de Sakila-voorbeelddatabase die beschikbaar is voor MySQL- en PostgreSQL-varianten.
U kunt de voorbeelddatabase gerust downloaden en importeren op uw server. U kunt indien nodig ook een andere gegevensset gebruiken.
Voorbeeld 1: BESTEL OP
De meest basale en eenvoudigste methode die we kunnen gebruiken om de meest recente record op datum op te halen, is door een SQL ORDER BY-clausule te gebruiken.
We kunnen de records in aflopende volgorde ordenen op basis van de datumwaarde en het resultaat vervolgens beperken tot slechts één rij.
Neem bijvoorbeeld de huurtabel uit de voorbeelddatabase van Sakila. Het bevat de kolom “huurdatum” die de datum aangeeft waarop een film is verhuurd.
We kunnen dit gebruiken om te demonstreren hoe we de ORDER BY-clausule kunnen gebruiken om de meest recente record uit de tabel op te halen.
SELECTEER *
VAN verhuur
VOLGORDE BY verhuurdatum DESC
BEGRENZING 1 ;
In dit geval gebruiken we de ORDER BY-clausule en geven we de ‘huurdatum’ door als doelkolom. We zorgen er ook voor dat de database de records in aflopende volgorde ordent.
Ten slotte beperken we ook het aantal uitvoerrecords dat de meest recente rij uit de tabel moet retourneren.
Voorbeeld 2: De functie Max() gebruiken
Wist u dat we de functie max() kunnen gebruiken voor datumwaarden? Ja, we kunnen een eenvoudige SQL-subquery en de functie max() op datumwaarden gebruiken om de meest recente record uit een bepaalde tabel op te halen.
Beschouw het volgende voorbeeld:
SELECTEER *VAN verhuur
WAAR verhuurdatum = (SELECT MAX(huurdatum) VAN huur);
Met behulp van de subquery wordt de maximale huurdatum uit de tabel gevonden. In de hoofdquery moeten we de records ophalen met een “huurdatum” gelijk aan de maximale datum.
Voorbeeld 3: Vensterfuncties
Voor databases die de vensterfuncties ondersteunen, kunnen we een subquery en de functie row_number() gebruiken om het meest recente record als volgt uit de tabel op te halen:
SELECTEER *VAN (
SELECTEER *,
ROW_NUMBER() OVER ( VOLGORDE BY verhuurdatum DESC) AS rn
VAN verhuur
) AS-subquery
WAAR rn = 1 ;
In het gegeven voorbeeld wijst de subquery een rijnummer toe aan elke rij op basis van de kolom “huurdatum” in aflopende volgorde met behulp van de vensterfunctie ROW_NUMBER().
De buitenste query selecteert vervolgens alle kolommen uit de subquery waarbij het rijnummer 1 is, waardoor in feite de meest recente huurrecord(s) worden geselecteerd.
Conclusie
In dit bericht hebben we de verschillende methoden en technieken onderzocht die we kunnen gebruiken om de meest recente record op te halen op basis van een datum.