MySQL中的=和=有什么区别?

use*_*729 6 mysql

mysql> set @num := 1;
Query OK, 0 rows affected (0.00 sec)

mysql> set @num = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> select @num;
+------+
| @num |
+------+
|    0 |
+------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

似乎两个都有效.

Ant*_*ney 4

简而言之,在使用时SET它们都充当赋值运算符,但在任何非设置语句中,:=用于赋值并=检查相等性

对于 SET,= 或 := 都可以用作赋值运算符。

您还可以在 SET 以外的语句中为用户变量赋值。在这种情况下,赋值运算符必须是 := 而不是 =,因为 = 在非 SET 语句中被视为比较运算符

mysql> SET @t1=1, @t2=2, @t3:=4;
mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
+------+------+------+--------------------+
| @t1  | @t2  | @t3  | @t4 := @t1+@t2+@t3 |
+------+------+------+--------------------+
|    1 |    2 |    4 |                  7 | 
+------+------+------+--------------------+
Run Code Online (Sandbox Code Playgroud)

取自MySQL 8.4 用户定义变量