Operator penugasan. Menyebabkan variabel pengguna di sisi kiri operator mengambil nilai di sebelah kanannya. Nilai di sisi kanan dapat berupa nilai literal, variabel lain yang menyimpan nilai, atau ekspresi hukum apa pun yang menghasilkan nilai skalar, termasuk hasil kueri (asalkan nilai ini adalah nilai skalar). Anda dapat melakukan banyak tugas dalam pernyataan SET yang sama. Anda dapat melakukan banyak tugas dalam pernyataan yang sama.
SELECT @var1, @var2;
NULL, NULL
SELECT @var1 := 1, @var2;
1, NULL
SELECT @var1, @var2;
1, NULL
SELECT @var1, @var2 := @var1;
1, 1
SELECT @var1, @var2;
1, 1
SELECT @var1:=COUNT(*) FROM t1;
4
SELECT @var1;
4
Unlike =, the := operator is never interpreted as a comparison operator. This means you can use := in any valid SQL statement (not just in SET statements) to assign a value to a variable.
SELECT @var1, @var2;
NULL, NULL
SELECT @var1 := 1, @var2;
1, NULL
SELECT @var1, @var2;
1, NULL
SELECT @var1, @var2 := @var1;
1, 1
SELECT @var1, @var2;
1, 1
SELECT @var1:=COUNT(*) FROM t1;
4
SELECT @var1;
4
You can make value assignments using := in other statements besides SELECT, such as UPDATE, as shown here:
SELECT @var1;
4
SELECT * FROM t1;
1, 3, 5, 7
UPDATE t1 SET c1 = 2 WHERE c1 = @var1:= 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
SELECT @var1;
1
SELECT * FROM t1;
2, 3, 5, 7