Do tego przyzwyczajone jest zapytanie MySQL Limit ograniczać liczba wierszy zwracanych ze zbioru wyników, a nie ujmujący cały zestaw w bazie MySQL. Klauzula Limit współpracuje z instrukcją SELECT w celu zwrócenia tylko określonej liczby wierszy. To zapytanie akceptuje tylko jeden lub dwa argumenty, a ich wartości powinny wynosić zero lub dowolną dodatnią liczbę całkowitą.
Jest to niezbędne w przypadku, gdy tabela zawiera tysiące wierszy lub gdy chcemy zwrócić tylko ostatnio wstawione dane. Innymi słowy, jeśli nie jesteś zainteresowany uzyskaniem wszystkich wierszy zwróconych przez zapytanie, użyj klauzuli MySQL Limit z instrukcją SELECT. Poprawia wydajność zapytania, a nawet przestaje powodować awarię systemu, gdy tabela zawiera dużą liczbę danych.
Aby pobrać tylko określone wiersze z tabeli, MySQL używa metody LIMIT klauzula, podczas gdy SQL używa klauzuli SZCZYT klauzula, a Oracle używa klauzuli NUMER WIERSZA klauzula z WYBIERAĆ oświadczenie.
Składnia
Poniżej przedstawiono składnię używania zapytania ograniczającego w MySQL-a :
SELECT column_list FROM table_name LIMIT offset, count;
W powyższej składni możemy zobaczyć:
Lista_kolumn: Jest to nazwa kolumny, którą chcesz zwrócić.
Nazwa tabeli: Jest to nazwa tabeli zawierającej nazwę kolumny.
Zrównoważyć: Określa numer wiersza, z którego chcesz wrócić. Przesunięcie wiersza zaczyna się od 0, a nie od 1.
Liczyć: Określa maksymalną liczbę wierszy, które chcesz zwrócić.
Poniższa wizualna reprezentacja wyjaśnia to jaśniej:
UWAGA: Jeśli w klauzuli Limit podasz tylko jeden argument, MySQL przyjmie to, aby określić maksymalną liczbę wierszy zwracanych przez zbiór wyników. W takim przypadku argumenty klauzuli Limit, przesunięcie i liczba są równoważne.
Klauzula LIMIT z klauzulą ORDER BY
Użytkownik musi użyć klauzuli Limit z klauzulą Order By. Bez użycia klauzuli Order By otrzymasz wynik w postaci bliżej nieokreślony porządek . W takim przypadku trudno jest wiedzieć, z jakich wierszy wynika, że zapytanie zwraca wynik. Warto więc stosować ten nawyk Klauzula Group By z klauzulą Limit umożliwiającą uzyskanie wierszy w określonej kolejności.
Aby uzyskać wynik w unikalnej kolejności, można zastosować następującą składnię:
SELECT column_list FROM table_name GROUP BY order_expression LIMIT offset, count;
Przykłady limitów MySQL
Stwórzmy przykładową tabelę w bazie danych zawierającą następujące dane i zobaczmy, jak działa klauzula Limit w MySQL na różnych przykładach:
Tabela: pracownicy
1. Limit MySQL, aby zwrócić najwyższe lub najniższe wiersze
Poniższe stwierdzenie zostało użyte do określenia pięciu najlepszych młodszych pracowników:
SELECT * FROM employees ORDER BY emp_age LIMIT 5;
Ta instrukcja najpierw sortuje wiek pracownika za pomocą klauzuli Group By, a następnie klauzula Limit zwraca pięć pierwszych wyników. Po wykonaniu powyższych kroków otrzymamy następujące dane wyjściowe:
2. Limit MySQL, aby uzyskać zakres wierszy przy użyciu przesunięcia
Czasami chcesz uzyskać wynik mieszczący się w zakresach wartości. Na przykład masz dużą liczbę wierszy do wyświetlania danych dotyczących aplikacji, a następnie dzielisz je na strony, a każda strona zawiera maksymalnie 10 wierszy w tabeli. W takim przypadku możesz użyć następującego zapytania, aby uzyskać zakres wierszy:
SELECT emp_id, emp_name, income FROM employees ORDER BY income DESC LIMIT 3,7;
Ta instrukcja zwraca wiersze, zaczynając od wiersza numer 3 i przechodząc do maksymalnie 7 wierszy. Sortuje również dochody pracownika w kolejności od najwyższej do najniższej. Wykonaj zapytanie, a otrzymasz następujące dane wyjściowe:
jak przekonwertować ciąg na liczbę całkowitą
3. Limit MySQL z klauzulą WHERE
Limit MySQL można również obsługiwać za pomocą klauzuli WHERE. Najpierw sprawdza określony warunek w tabeli i generuje wiersze spełniające warunek.
To zapytanie wybiera pierwszych pięciu pracowników, których wiek jest większy niż 30 lat. Tutaj również użyliśmy klauzuli Order By, aby posortować pracowników w kolejności malejącej na podstawie ich dochodów.
SELECT emp_name, emp_age, income FROM employees WHERE emp_age>30 ORDER BY income DESC LIMIT 5;
Po pomyślnym wykonaniu powyższej instrukcji otrzymamy następujący wynik:
4. MySQL LIMIT, aby uzyskać n-tą najwyższą lub najniższą wartość
Czasami chcemy uzyskać wiersze o n-tej najwyższej lub najniższej wartości. W takim przypadku możemy użyć następującej klauzuli MySQL LIMIT, aby uzyskać oczekiwany wynik:
SELECT column_list FROM table_name ORDER BY expression LIMIT n-1, 1;
W tej składni klauzula LIMIT n-1, 1 zwraca 1 wiersz rozpoczynający się od wiersza n.
Na przykład poniższe zapytanie zwraca informacje o pracowniku, który ma drugi najwyższy dochód:
SELECT emp_name, city, income FROM employees ORDER BY income LIMIT 1, 1;
Wykonując powyższą instrukcję, wyświetli się następujące zapytanie:
Należy zauważyć, że powyższe zapytanie działa tylko wtedy, gdy w tabeli nie ma dwóch pracowników, którzy mają pewne dochody. W takim razie skorzystamy DENSE_RANK () aby uzyskać dokładniejszy wynik.