2013-03-25 284 views

回答

8

他们两个都是赋值运算符但有一点我可以找到他们之间的分歧是=可以用来执行布尔操作,而:=不能。

有效:SUM(VAL = 0)
无效:SUM(VAL:= 0)

FROM User-Defined Variables

一件事,也可以将值分配给在用户变量除SET以外的其他语句。在这种情况下,赋值运算符必须为:=和not =,因为后者在非SET语句中被视为比较运算符=。

mysql> SET @t1=1, @t2=2, @t3:=4; 
mysql> SELECT @t1, @t2, @t3, @t4 := @[email protected][email protected]; 
+------+------+------+--------------------+ 
| @t1 | @t2 | @t3 | @t4 := @[email protected][email protected] | 
+------+------+------+--------------------+ 
| 1 | 2 | 4 |     7 | 
+------+------+------+--------------------+ 
8

这是或多或少的语法糖。

看看here

最重要的区别是

不像=,则:=运算符是永远不会理解为一个比较 运营商。这意味着您可以在任何有效的SQL语句中使用:=(仅在SET语句中不使用 )将值赋给变量。

1

您只能使用:=表示分配 - 从不进行比较。这只是一些语法糖,它根本不会改变功能。你会从代码生成的SQL中看到很多。

+1

当,每个人都击败了我。哈。 – antinescience 2013-03-25 11:51:46