Ce face LIMIT
LIMIT se pune la finalul interogării și oprește rezultatul după un anumit număr de rânduri. Cu OFFSET sari peste primele rânduri, ceea ce este exact ce îți trebuie pentru paginare.
MySQL acceptă și forma scurtă LIMIT sarite, numar. Atenție la ordinea valorilor: în forma scurtă, primul număr este câte rânduri sari.
Folosește LIMIT împreună cu ORDER BY. Altfel nu știi care rânduri primești.
Parametri
| Parametru | Descriere |
|---|---|
numar |
Câte rânduri returnezi cel mult. |
sarite |
Opțional. Câte rânduri sari de la început. |
Exemple
Exemplele de pe această pagină pornesc de la datele de mai jos. Rulează mai întâi acest cod, apoi exemplul.
CREATE TABLE produse (
id INT PRIMARY KEY,
nume VARCHAR(50) NOT NULL,
categorie VARCHAR(30),
pret INT,
stoc INT
);
INSERT INTO produse VALUES
(1, 'Laptop', 'Electronice', 3500, 4),
(2, 'Mouse', 'Electronice', 80, 25),
(3, 'Birou', 'Mobilier', 900, 0),
(4, 'Scaun', 'Mobilier', 650, 7),
(5, 'Monitor', 'Electronice', 1200, 3);
Exemplul 1: Top 3 cele mai scumpe produse
SELECT nume, pret FROM produse ORDER BY pret DESC LIMIT 3;
Rezultat
+---------+------+
| nume | pret |
+---------+------+
| Laptop | 3500 |
| Monitor | 1200 |
| Birou | 900 |
+---------+------+
Exemplul 2: Paginare: a doua pagină, câte 2 pe pagină
SELECT id, nume FROM produse ORDER BY id LIMIT 2 OFFSET 2;
SELECT id, nume FROM produse ORDER BY id LIMIT 2, 2;
Rezultat
+----+-------+
| id | nume |
+----+-------+
| 3 | Birou |
| 4 | Scaun |
+----+-------+
+----+-------+
| id | nume |
+----+-------+
| 3 | Birou |
| 4 | Scaun |
+----+-------+
Greșeli frecvente
- Inversezi valorile în forma scurtă:
LIMIT 10, 2înseamnă „sari 10, ia 2”, nu „ia 10”. - Folosești
OFFSETmare pe tabele cu milioane de rânduri. MySQL tot citește rândurile sărite. Pentru paginare rapidă, filtrează după ultimul id văzut:WHERE id > 5000 ORDER BY id LIMIT 20.