CodeGym /Kursy /SQL SELF /Ograniczanie liczby wierszy (LIMIT) i zarządzanie wynikie...

Ograniczanie liczby wierszy (LIMIT) i zarządzanie wynikiem

SQL SELF
Poziom 3, Lekcja 0
Dostępny

Jak ograniczyć liczbę wierszy zwracanych przez zapytanie? Jeśli potrzebujesz tylko pierwszych 5 studentów, pracownika z najwyższą pensją albo listę top-10 produktów, to komenda LIMIT jest dokładnie tym, czego szukasz!

Kiedy pracujesz z bazami danych, wyniki zapytań mogą być ogromne. W takich sytuacjach pojawia się potrzeba ograniczenia ilości zwracanych danych, żeby:

  1. Zmniejszyć obciążenie serwera i sieci.
  2. Łatwiej analizować dane bez przewijania nieskończonych stron.

Prosta analogia: wyobraź sobie, że chciałeś postawić drinka dziewczynie w barze, ale przypadkowo zapłaciłeś za wszystkich gości. Robi wrażenie, ale po co ci tyle dziewczyn? Dlatego uczymy się zamawiać tylko to, co trzeba, i LIMIT nam w tym pomoże.

Podstawowa składnia LIMIT

Tak to wygląda:

SELECT kolumna1, kolumna2
FROM tabela
LIMIT liczba_wierszy;

Przykład 1: Ograniczenie rekordów

Załóżmy, że mamy tabelę students z 1000 wierszy. Chcemy zobaczyć tylko pierwsze 3 rekordy:

SELECT *
FROM students 
LIMIT 3;

Wynik:

id name age
1 Otto 20
2 Anna 22
3 Alex 19

Proste: zamiast długiej listy widzisz tylko trzy wiersze. LIMIT zwrócił tyle wierszy, ile poprosiłeś.

Praktyczne zastosowania LIMIT

Przykład 2: Top-produkty

Pracujesz z tabelą produktów products i chcesz poznać nazwy oraz ceny pięciu najdroższych towarów. Najpierw sortujemy rekordy malejąco po cenie, a potem ograniczamy wynik:

SELECT product_name, price
FROM products 
ORDER BY price DESC 
LIMIT 5;

Wynik:

product_name price
iPhone 16 Pro Max 1500
MacBook Pro 1200
AirPods Pro 300
iPad Pro 280
Apple Watch 250

Teraz widzisz tylko top-5 produktów z najwyższą ceną.

Jak LIMIT pomaga testować zapytania

Podczas pisania zapytań SQL na pewno trafisz na duże ilości danych. LIMIT pozwala ci najpierw sprawdzić poprawność zapytania, zwracając małą próbkę danych. Na przykład:

SELECT *
FROM transactions_log
LIMIT 10;

Kiedy upewnisz się, że logika zapytania jest poprawna, możesz usunąć LIMIT.

Specyfika użycia LIMIT

1. LIMIT bez ORDER BY

Jeśli nie podasz sortowania ORDER BY, to LIMIT zwróci dane w przypadkowej kolejności — a właściwie w takiej, w jakiej są zapisane w tabeli. Zwykle to nie problem, ale czasem taki wynik może być nieprzewidywalny.

Na przykład:

SELECT name, age
FROM students 
LIMIT 3;

Bez ORDER BY nie masz pewności, które trzy rekordy trafią do wyniku.

Żeby tego uniknąć, użyj ORDER BY:

SELECT name, age
FROM students 
ORDER BY age DESC 
LIMIT 3;

2. Wspólne użycie z WHERE

Możemy łączyć WHERE do filtrowania wierszy i LIMIT do ograniczania wyniku. To wygodne, gdy danych jest za dużo, a interesują cię tylko pierwsze trafienia.

SELECT *
FROM students 
WHERE age > 18 
LIMIT 5;

To zapytanie zwróci pierwszych 5 studentów starszych niż 18 lat.

3. Praktyczne zastosowanie: podgląd pierwszej strony danych

Jeśli pracujesz z systemem wyświetlania danych (np. aplikacją webową), LIMIT możesz użyć do pokazania pierwszej strony danych.

SELECT *
FROM employees 
ORDER BY hire_date 
LIMIT 10;

Tutaj dostaniesz pierwszych 10 pracowników, posortowanych po dacie zatrudnienia.

Bardziej zaawansowany przykład: Łączenie LIMIT z agregatami

Wyobraź sobie, że chcesz wyświetlić trzy najpopularniejsze kategorie produktów:

SELECT category, COUNT(*) AS total_products
FROM products 
GROUP BY category 
ORDER BY total_products DESC 
LIMIT 3;

To zapytanie najpierw grupuje produkty po kategoriach, sortuje je po liczbie, a potem zostawia tylko trzy wiersze.

Jak dokładnie działa operator GROUP BY i funkcja COUNT() dowiesz się w kolejnych wykładach.

Typowe błędy przy użyciu LIMIT

Pracując z LIMIT, możesz natknąć się na kilka problemów:

"Przypadkowa kolejność wierszy": jeśli zapomnisz o ORDER BY, dane mogą przyjść w nieoczekiwanej kolejności. Zawsze podawaj sortowanie, jeśli to ważne.

"Ucięcie ważnych danych": np. jeśli dwa rekordy mają takie same wartości w kolumnie sortowania, LIMIT może zwrócić niepełny wynik. Dodaj dodatkowe kryteria sortowania, żeby tego uniknąć.

SELECT *
FROM students 
ORDER BY age DESC, name ASC 
LIMIT 5;

"Zła kombinacja z WHERE". Czasem warunki filtrowania zawężają wynik tak bardzo, że LIMIT nie ma sensu. Na przykład, jeśli WHERE zwraca tylko 2 rekordy, a LIMIT ustawisz na 10, i tak dostaniesz tylko 2 wiersze.

"Zależność od bazy danych". Niektóre bazy mają alternatywną składnię do ograniczania wierszy (np. TOP w SQL Server). PostgreSQL używa właśnie LIMIT.

Po co LIMIT w prawdziwym życiu?

Interfejsy z dużą liczbą rekordów: wyobraź sobie sklep internetowy, gdzie przeglądasz produkty strona po stronie. Pierwsza strona może mieć tylko 10 rekordów i LIMIT to umożliwia.

Raporty: często interesuje cię tylko górna część danych (np. top-5 pracowników, liderów sprzedaży, studentów z najwyższymi ocenami).

Testowanie i optymalizacja zapytań: zamiast pracować z milionami wierszy, możesz szybko przetestować zapytanie na małej próbce.

2
Zadanie
SQL SELF, poziom 3, lekcja 0
Niedostępne
Ograniczenie liczby rekordów w tabeli
Ograniczenie liczby rekordów w tabeli
2
Zadanie
SQL SELF, poziom 3, lekcja 0
Niedostępne
Wyświetlanie top-5 pracowników według wynagrodzenia
Wyświetlanie top-5 pracowników według wynagrodzenia
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION