2013-03-25 273 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