Ce face Operatorii de atribuire: = și :=
În SET și în UPDATE ... SET, semnul = înseamnă atribuire. În rest (de exemplu în SELECT sau WHERE), = înseamnă comparație.
:= este întotdeauna atribuire. Atribuirea variabilelor în interiorul expresiilor (SELECT @x := ...) este depreciată; folosește SET sau SELECT ... INTO.
Parametri
| Parametru | Descriere |
|---|---|
@variabila |
Variabila de utilizator (valabilă până la sfârșitul conexiunii). |
valoare |
Valoarea atribuită. |
Ce returnează
Atribuirea nu returnează un rezultat; în expresii (depreciat) returnează valoarea atribuită.
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(30),
pret DECIMAL(10,2),
stoc INT,
reducere INT
);
INSERT INTO produse VALUES
(1, 'Laptop', 3499.90, 4, NULL),
(2, 'Mouse', 79.50, 25, 10),
(3, 'Birou', 899.00, 0, 15),
(4, 'Scaun', 649.99, 7, NULL),
(5, 'Monitor', 1199.00, 3, 5);
Exemplul 1: Variabile cu SET
SET @tva = 21, @pret := 100;
SELECT @pret * (1 + @tva / 100) AS pret_cu_tva;
Rezultat
+-------------+
| pret_cu_tva |
+-------------+
| 121.0000 |
+-------------+
Exemplul 2: Valoare dintr-o interogare în variabilă
SELECT MAX(pret) INTO @cel_mai_scump FROM produse;
SELECT nume FROM produse WHERE pret = @cel_mai_scump;
Rezultat
+--------+
| nume |
+--------+
| Laptop |
+--------+
Greșeli frecvente
- Folosești
SELECT @x := @x + 1pentru numerotarea rândurilor. Este depreciat; foloseșteROW_NUMBER() OVER (...).
Comenzi înrudite
Operatori de comparație: Compară două valori și returnează 1 (adevărat), 0 (fals) sau NULL.UPDATE: Modifică valorile din rândurile existente ale unui tabel.ROW_NUMBER(): Numerotează rândurile 1, 2, 3… în fiecare grup, fără să le comprime ca GROUP BY.