ORDER BY în MySQL

Citirea datelor Toate versiunile MySQL și MariaDB

Ordonează rezultatele crescător (ASC) sau descrescător (DESC) după una sau mai multe coloane.

Sintaxă
SELECT ... FROM tabel ORDER BY coloana1 [ASC|DESC], coloana2 [ASC|DESC];

Ce face ORDER BY

Fără ORDER BY, MySQL nu garantează nicio ordine a rândurilor. Dacă ordinea contează, scrie mereu ORDER BY.

ASC (crescător) este implicit. DESC înseamnă descrescător. Poți ordona după mai multe coloane: a doua coloană decide doar între rândurile egale pe prima.

Parametri

Parametru Descriere
coloana Coloana (sau expresia) după care se ordonează.
ASC / DESC Opțional. Crescător (implicit) sau descrescător.

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: Cele mai scumpe produse primele

SELECT nume, pret FROM produse ORDER BY pret DESC;

Rezultat

+---------+------+
| nume    | pret |
+---------+------+
| Laptop  | 3500 |
| Monitor | 1200 |
| Birou   |  900 |
| Scaun   |  650 |
| Mouse   |   80 |
+---------+------+

Exemplul 2: După două coloane

Întâi alfabetic după categorie, apoi, în cadrul fiecărei categorii, după preț crescător.

SELECT categorie, nume, pret FROM produse ORDER BY categorie, pret;

Rezultat

+-------------+---------+------+
| categorie   | nume    | pret |
+-------------+---------+------+
| Electronice | Mouse   |   80 |
| Electronice | Monitor | 1200 |
| Electronice | Laptop  | 3500 |
| Mobilier    | Scaun   |  650 |
| Mobilier    | Birou   |  900 |
+-------------+---------+------+

Greșeli frecvente

  • Pui ORDER BY înaintea lui WHERE. Ordinea corectă a clauzelor este: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.
  • Crezi că DESC se aplică tuturor coloanelor. În ORDER BY a, b DESC, doar b este descrescător.

Comenzi înrudite

  • LIMIT: Limitează numărul de rânduri returnate. Folosit pentru top-uri și paginare.
  • SELECT: Citește date dintr-un tabel. Este comanda SQL folosită cel mai des.
  • GROUP BY: Grupează rândurile cu aceeași valoare, ca să calculezi totaluri pentru fiecare grup.