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 email 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 email 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 email 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 σύνταξη λέξης-κλειδιού