Ambos son operadores de asignación pero una cosa que puedo encontrar sus diferencias es que =
se puede usar para realizar una operación booleana mientras :=
no puede.
válido :SUMA(valor =0)
Inválido:SUMA(valor :=0)
DE Variables definidas por el usuario
Una cosa más, También puede asignar un valor a una variable de usuario en declaraciones que no sean SET. En este caso, el operador de asignación debe ser :=y no =porque este último se trata como el operador de comparación =en declaraciones que no son 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 |
+------+------+------+--------------------+