2010-02-04 13 views

Respuesta

4

En resumen, cuando se utiliza SET que ambos actúan como operadores de asignación, pero en ninguna de las declaraciones no establecidos, := es para assingment y = comprueba la igualdad .

Para SET, puede utilizarse = o: = como el operador de asignación.

También puede asignar un valor a una variable de usuario en sentencias que no sean SET. En este caso, el operador de asignación debe ser: = = y no porque = se trata como un operador de comparación en los estados no-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 | 
+------+------+------+--------------------+ 

Tomado de MySQL 8.4 User Defined Variables

+0

Parece que está en desuso: 'mysql> @num: = 0;' dará error. – user198729

+0

¿Es eso una declaración válida de MySQL? ¿Puedes definir variables así? –

+0

Por el bien de cualquiera que lea estos comentarios, no está en desuso. Y gracias @AnthonyForloney por diseminar lo básico. Es por eso que amo stackoverflow. – billynoah

2

Ambos son operador de asignación.

: = se creó para ser más claro ya que = también es un operador de equivalencia en SQL. WHERE x = 1; (la mayoría de los lenguajes de programación es ==)

+0

heh .. que plantea la pregunta, ¿por qué diablos no acaba de usar '==' y '=' como el resto del universo? – billynoah

Cuestiones relacionadas