logo

Limit MySQL'a

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:

Limit MySQL'a

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

Limit MySQL'a

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:

Limit MySQL'a

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ą
Limit MySQL'a

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:

Limit MySQL'a

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:

Limit MySQL'a

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.