之间有什么区别
set test_var = 20;
和
set test_var:=20;
因为他们似乎都分配值?
答案 0 :(得分:10)
它们都是赋值运算符,但有一点我可以发现它们的区别在于=
可用于执行布尔运算,而:=
则不能。
有效:SUM(val = 0)
无效:SUM(val:= 0)
还有一件事,您还可以在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 |
+------+------+------+--------------------+
答案 1 :(得分:9)
答案 2 :(得分:1)
您只能使用:=进行分配 - 永远不会用于比较。它只是一些语法糖,它根本没有真正改变功能。你会从代码生成的SQL中看到很多。