Επιλέξτε την πιο πρόσφατη εγγραφή κατά ημερομηνία στο SQL

Epilexte Ten Pio Prosphate Engraphe Kata Emeromenia Sto Sql



Όταν εργάζεστε σε μια βάση δεδομένων SQL, μπορεί να συναντήσετε μια περίπτωση όπου πρέπει να ανακτήσετε την πιο πρόσφατη εγγραφή από έναν δεδομένο πίνακα με βάση την ημερομηνία. Αυτό μπορεί να είναι για σελιδοποίηση, διαχείριση αποθέματος, παρακολούθηση κ.λπ.

Σε αυτόν τον οδηγό, θα σας καθοδηγήσουμε στις διάφορες μεθόδους και τεχνικές που μπορούμε να χρησιμοποιήσουμε για να επιλέξουμε την πιο πρόσφατη εγγραφή από έναν πίνακα με βάση την ημερομηνία.

Δειγμα δεδομένων

Για λόγους επίδειξης, χρησιμοποιούμε τη δειγματοληπτική βάση δεδομένων Sakila που είναι διαθέσιμη για γεύσεις MySQL και PostgreSQL.







Μη διστάσετε να κατεβάσετε και να εισαγάγετε το δείγμα βάσης δεδομένων στον διακομιστή σας. Μπορείτε επίσης να χρησιμοποιήσετε οποιοδήποτε άλλο σύνολο δεδομένων ανάλογα με την περίπτωση.



Παράδειγμα 1: ΠΑΡΑΓΓΕΛΙΑ ΑΠΟ

Η πιο βασική και απλούστερη μέθοδος που μπορούμε να χρησιμοποιήσουμε για να ανακτήσουμε την πιο πρόσφατη εγγραφή κατά ημερομηνία είναι να χρησιμοποιήσουμε μια πρόταση SQL ORDER BY.



Μπορούμε να διατάξουμε τις εγγραφές με φθίνουσα σειρά με βάση την τιμή ημερομηνίας και στη συνέχεια να περιορίσουμε το αποτέλεσμα σε μία μόνο σειρά.





Πάρτε για παράδειγμα τον πίνακα ενοικίασης από τη δειγματοληπτική βάση δεδομένων Sakila. Περιέχει τη στήλη 'ημερομηνία_ενοικίασης' που υποδηλώνει την ημερομηνία ενοικίασης μιας ταινίας.

Μπορούμε να το χρησιμοποιήσουμε για να δείξουμε πώς να χρησιμοποιήσετε την ρήτρα ORDER BY για να ανακτήσετε την πιο πρόσφατη εγγραφή από τον πίνακα.



ΕΠΙΛΟΓΗ *

ΑΠΟ ενοικίαση

ΣΕΙΡΑ ΑΠΟ rental_date DESC

ΟΡΙΟ 1 ;

Σε αυτήν την περίπτωση, χρησιμοποιούμε την ρήτρα ORDER BY και μεταβιβάζουμε την 'ημερομηνία_ενοικίασης' ως τη στήλη-στόχο. Φροντίζουμε επίσης να λέμε στη βάση δεδομένων να ταξινομήσει τις εγγραφές με φθίνουσα σειρά.

Τέλος, περιορίζουμε επίσης τον αριθμό των εγγραφών εξόδου που θα πρέπει να επιστρέψουν την πιο πρόσφατη σειρά από τον πίνακα.

Παράδειγμα 2: Χρήση της συνάρτησης Max().

Γνωρίζατε ότι μπορούμε να χρησιμοποιήσουμε τη συνάρτηση max() στις τιμές ημερομηνίας; Ναι, μπορούμε να χρησιμοποιήσουμε ένα απλό υποερώτημα SQL και τη συνάρτηση max() στις τιμές ημερομηνίας για να ανακτήσουμε την πιο πρόσφατη εγγραφή από έναν δεδομένο πίνακα.

Εξετάστε το ακόλουθο παράδειγμα:

ΕΠΙΛΟΓΗ *

ΑΠΟ ενοικίαση

WHERE rental_date = (ΕΠΙΛΟΓΗ ΜΕΓΙΣΤΟΥ(ημερομηνία_ενοικίασης) FROM rental);

Χρησιμοποιώντας το δευτερεύον ερώτημα βρίσκετε τη μέγιστη ημερομηνία ενοικίασης από τον πίνακα. Στο κύριο ερώτημα, θα πρέπει να ανακτήσουμε τις εγγραφές με μια 'ημερομηνία_ενοικίασης' ίση με τη μέγιστη ημερομηνία.

Παράδειγμα 3: Λειτουργίες παραθύρου

Για βάσεις δεδομένων που υποστηρίζουν τις συναρτήσεις παραθύρου, μπορούμε να χρησιμοποιήσουμε μια συνάρτηση subquery και row_number() για να ανακτήσουμε την πιο πρόσφατη εγγραφή από τον πίνακα ως εξής:

ΕΠΙΛΟΓΗ *

ΑΠΟ (

ΕΠΙΛΟΓΗ *,

ROW_NUMBER() ΠΑΝΩ ( ΣΕΙΡΑ ΑΠΟ rental_date DESC) AS rn

ΑΠΟ ενοικίαση

) AS υποερώτημα

ΠΟΥ rn = 1 ;

Στο συγκεκριμένο παράδειγμα, το υποερώτημα εκχωρεί έναν αριθμό σειράς σε κάθε σειρά με βάση τη στήλη 'ημερομηνία_ενοικίασης' με φθίνουσα σειρά χρησιμοποιώντας τη συνάρτηση παραθύρου ROW_NUMBER().

Στη συνέχεια, το εξωτερικό ερώτημα επιλέγει όλες τις στήλες από το δευτερεύον ερώτημα όπου ο αριθμός σειράς είναι 1, επιλέγοντας ουσιαστικά τις πιο πρόσφατες εγγραφές ενοικίασης.

συμπέρασμα

Σε αυτήν την ανάρτηση, εξερευνήσαμε τις διάφορες μεθόδους και τεχνικές που μπορούμε να χρησιμοποιήσουμε για να φέρουμε την πιο πρόσφατη εγγραφή με βάση μια ημερομηνία.