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)
似乎两者都可以工作。
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)
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 |
+------+------+------+--------------------+
两者都是赋值运算符。
:=
被创建出来是为了更清晰,因为在 SQL 中 =
也是一个等价运算符。例如:WHERE x = 1;
(大多数计算机语言中是 ==
)
==
和=
呢? - But those new buttons though..