MySQL LIMIT & OFFSET με Παραδείγματα
Τι είναι η λέξη-κλειδί LIMIT;
Η λέξη-κλειδί ορίου χρησιμοποιείται για τον περιορισμό του αριθμού των σειρών που επιστρέφονται σε ένα αποτέλεσμα ερωτήματος.
Μπορεί να χρησιμοποιηθεί σε συνδυασμό με τις εντολές SELECT, UPDATE OR DELETE LIMIT σύνταξη λέξης-κλειδιού
Η σύνταξη για τη λέξη-κλειδί LIMIT είναι η εξής
SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT N;
ΕΔΩ
- «ΕΠΙΛΟΓΗ {όνομα(α) πεδίου | *} FROM Όνομα(τα) πίνακα" είναι το Δήλωση SELECT που περιέχει τα πεδία που θα θέλαμε να επιστρέψουμε στο ερώτημά μας.
- "[ΠΟΥ συνθήκη]" είναι προαιρετικό, αλλά όταν παρέχεται, μπορεί να χρησιμοποιηθεί για τον καθορισμό ενός φίλτρου στο σύνολο αποτελεσμάτων.
- «ΟΡΙΟ Ν» είναι η λέξη κλειδί και N είναι οποιοσδήποτε αριθμός που ξεκινά από το 0, βάζοντας το 0 ως όριο δεν επιστρέφει καμία εγγραφή στο ερώτημα. Αν βάλετε έναν αριθμό, ας πούμε 5, θα επιστρέψετε πέντε εγγραφές. Εάν οι εγγραφές στον καθορισμένο πίνακα είναι μικρότερες από N, τότε όλες οι εγγραφές από τον ερωτούμενο πίνακα επιστρέφονται στο σύνολο αποτελεσμάτων.
Ας δούμε ένα παράδειγμα -
SELECT * FROM members LIMIT 2;
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
Όπως μπορείτε να δείτε από το παραπάνω στιγμιότυπο οθόνης, έχουν επιστραφεί μόνο δύο μέλη.
Λήψη λίστας δέκα (10) μελών μόνο από τη βάση δεδομένων
Ας υποθέσουμε ότι θέλουμε να λάβουμε μια λίστα με τα 10 πρώτα εγγεγραμμένα μέλη από τη βάση δεδομένων Myflix. Θα χρησιμοποιούσαμε το παρακάτω σενάριο για να το πετύχουμε.
SELECT * FROM members LIMIT 10;
Η εκτέλεση του παραπάνω σεναρίου μας δίνει τα αποτελέσματα που φαίνονται παρακάτω
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | NULL | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm | NULL |
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
4 | Gloria Williams | Female | 14-02-1984 | NULL | 2nd Street 23 | NULL | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | NULL | Woodcrest | NULL | 845738767 | NULL | NULL |
6 | Sheldon Cooper | Male | NULL | NULL | Woodcrest | NULL | 976736763 | NULL | NULL |
7 | Rajesh Koothrappali | Male | NULL | NULL | Woodcrest | NULL | 938867763 | NULL | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | NULL | Woodcrest | NULL | 987636553 | NULL | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | NULL | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me | NULL |
Σημειώστε ότι μόνο 9 μέλη έχουν επιστραφεί στο ερώτημά μας, καθώς το N στον όρο LIMIT είναι μεγαλύτερο από τον αριθμό των συνολικών εγγραφών στον πίνακά μας.
Ξαναγράφοντας το παραπάνω σενάριο ως εξής
SELECT * FROM members LIMIT 9;
Επιστρέφει μόνο 9 σειρές στο σύνολο αποτελεσμάτων ερωτήματός μας.
Χρησιμοποιώντας το OFF SET στο ερώτημα LIMIT
The ΑΝΤΙΣΤΑΘΜΙΖΕΤΑΙ Η τιμή χρησιμοποιείται επίσης συχνότερα μαζί με τη λέξη-κλειδί LIMIT. Η τιμή OFF SET μας επιτρέπει να καθορίσουμε ποια σειρά θα ξεκινήσει από την ανάκτηση δεδομένων
Ας υποθέσουμε ότι θέλουμε να λάβουμε έναν περιορισμένο αριθμό μελών ξεκινώντας από τη μέση των σειρών, μπορούμε να χρησιμοποιήσουμε τη λέξη-κλειδί LIMIT μαζί με την τιμή μετατόπισης για να το πετύχουμε. Το σενάριο που εμφανίζεται παρακάτω λαμβάνει δεδομένα ξεκινώντας από τη δεύτερη σειρά και περιορίζει τα αποτελέσματα σε 2.
SELECT * FROM `members` LIMIT 1, 2;
Εκτέλεση του παραπάνω σεναρίου στο MySQL Ο πάγκος εργασίας έναντι του myflixdb δίνει τα ακόλουθα αποτελέσματα.
membership_ number | full_ names | gender | date_of _birth | date_of _registration | physical_ address | postal_ address | contact_ number | credit_ card_ number | |
---|---|---|---|---|---|---|---|---|---|
2 | Janet Smith Jones | Female | 23-06-1980 | NULL | Melrose 123 | NULL | NULL | jj@fstreet.com | NULL |
3 | Robert Phil | Male | 12-07-1989 | NULL | 3rd Street 34 | NULL | 12345 | rm@tstreet.com | NULL |
Note that here OFFSET = 1 Hence row#2 is returned & Limit = 2, Hence only 2 records are returned
Πότε πρέπει να χρησιμοποιήσουμε τη λέξη-κλειδί LIMIT;
Ας υποθέσουμε ότι αναπτύσσουμε την εφαρμογή που τρέχει πάνω από το myflixdb. Ο σχεδιαστής του συστήματός μας μάς ζήτησε να περιορίσουμε τον αριθμό των εγγραφών που εμφανίζονται σε μια σελίδα σε 20 εγγραφές ανά σελίδα για να αντισταθμίσουμε τους αργούς χρόνους φόρτωσης. Πώς θα προχωρήσουμε στην υλοποίηση του συστήματος που πληροί τέτοιες απαιτήσεις χρήστη; Η λέξη-κλειδί LIMIT είναι χρήσιμη σε τέτοιες περιπτώσεις. Θα μπορούσαμε να περιορίσουμε τα αποτελέσματα που επιστρέφονται από ένα ερώτημα σε 20 εγγραφές μόνο ανά σελίδα.
Σύνοψη
- Η λέξη-κλειδί LIMIT χρησιμοποιείται για τον περιορισμό του αριθμού των σειρών που επιστρέφονται από ένα σύνολο αποτελεσμάτων.
- Ο αριθμός LIMIT μπορεί να είναι οποιοσδήποτε αριθμός από το μηδέν (0) προς τα πάνω. Όταν το μηδέν (0) ορίζεται ως όριο, δεν επιστρέφονται σειρές από το σύνολο αποτελεσμάτων.
- Η τιμή OFF SET μας επιτρέπει να καθορίσουμε ποια σειρά θα ξεκινήσει από την ανάκτηση δεδομένων
- Μπορεί να χρησιμοποιηθεί σε συνδυασμό με τις εντολές SELECT, UPDATE OR DELETE LIMIT σύνταξη λέξης-κλειδιού