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

hsu*_*suk 13 mysql database operators colon-equals

两者之间有什么区别

set test_var = 20;
Run Code Online (Sandbox Code Playgroud)

set test_var:=20;
Run Code Online (Sandbox Code Playgroud)

因为他们似乎都分配了价值

Joh*_*Woo 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 | 
+------+------+------+--------------------+
Run Code Online (Sandbox Code Playgroud)


Don*_*sto 9

它或多或少是句法糖.

看看这里

最重要的区别是

与=不同,:=运算符永远不会被解释为比较运算符.这意味着您可以在任何有效的SQL语句(不仅仅是在SET语句中)中使用:=为变量赋值.