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

时间:2010-02-04 15:00:33

标签: 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)

似乎都有效。

2 个答案:

答案 0 :(得分:4)

简而言之,当使用SET时,它们都充当赋值运算符,但在任何非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 | 
+------+------+------+--------------------+

取自MySQL 8.4 User Defined Variables

答案 1 :(得分:2)

两者都是赋值运算符。

:=创建得更清楚,因为=也是SQL中的等价运算符。 WHERE x = 1;(大多数计算机语言为==