WHERE în MySQL

Citirea datelor Toate versiunile MySQL și MariaDB

Filtrează rândurile: păstrează doar rândurile care îndeplinesc o condiție.

Sintaxă
SELECT ... FROM tabel WHERE conditie;

Ce face WHERE

WHERE se pune după FROM și păstrează doar rândurile pentru care condiția este adevărată. Funcționează la fel în SELECT, UPDATE și DELETE.

Operatori de comparare: =, <> sau != (diferit), <, >, <=, >=. Condițiile se combină cu AND, OR și NOT. Textele se scriu între apostrofuri: 'Cluj'.

Parametri

Parametru Descriere
conditie Expresia verificată pentru fiecare rând.

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: O singură condiție

SELECT nume, pret FROM produse WHERE pret > 1000;

Rezultat

+---------+------+
| nume    | pret |
+---------+------+
| Laptop  | 3500 |
| Monitor | 1200 |
+---------+------+

Exemplul 2: Condiții combinate cu AND și OR

SELECT nume, categorie, stoc
FROM produse
WHERE categorie = 'Mobilier' AND stoc > 0;

SELECT nume, pret
FROM produse
WHERE pret < 100 OR pret > 3000;

Rezultat

+-------+-----------+------+
| nume  | categorie | stoc |
+-------+-----------+------+
| Scaun | Mobilier  |    7 |
+-------+-----------+------+

+--------+------+
| nume   | pret |
+--------+------+
| Laptop | 3500 |
| Mouse  |   80 |
+--------+------+

Exemplul 3: Paranteze pentru ordinea condițiilor

AND are prioritate față de OR. Pune paranteze ca să fie clar ce vrei.

SELECT nume, categorie, pret
FROM produse
WHERE categorie = 'Electronice' AND (pret < 100 OR stoc < 4);

Rezultat

+---------+-------------+------+
| nume    | categorie   | pret |
+---------+-------------+------+
| Mouse   | Electronice |   80 |
| Monitor | Electronice | 1200 |
+---------+-------------+------+

Greșeli frecvente

  • Scrii textele între ghilimele duble. În modul strict ANSI din MySQL, ghilimelele duble înseamnă nume de coloană. Folosește apostrofuri: 'Cluj'.
  • Compari cu NULL folosind =. WHERE email = NULL nu găsește niciodată nimic. Folosește IS NULL.
  • Folosești un alias din SELECT în WHERE. WHERE se evaluează înaintea lui SELECT, deci aliasul nu există încă.

Comenzi înrudite

  • SELECT: Citește date dintr-un tabel. Este comanda SQL folosită cel mai des.
  • LIKE: Caută texte după un model: începe cu, se termină cu, conține.
  • IN: Verifică dacă o valoare se află într-o listă. Înlocuiește mai multe condiții OR.
  • IS NULL: Găsește rândurile în care o coloană nu are valoare (NULL) sau, cu IS NOT NULL, în care are.