2010-02-04 3 views

ответ

4

Короче говоря, при использовании SET оба они выступают в качестве операторов присваивания, но в любом не сетового заявления, := для assingment и = проверяет равенства.

Для SET в качестве оператора присваивания можно использовать либо = или: =.

Вы также можете присвоить значение переменной пользователя в операторах, отличных от 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 | 
+------+------+------+--------------------+ 

Взятых из MySQL 8.4 User Defined Variables

+0

Кажется, это устарело: 'mysql> @num: = 0;' даст ошибку. – user198729

+0

Является ли это действительным оператором MySQL? Можете ли вы определить такие переменные? –

+0

Ради кого-либо, кто читает эти комментарии, он не устарел. И спасибо @AnthonyForloney за распространение основ. Вот почему я люблю stackoverflow. – billynoah

2

Оба являются оператором присваивания.

: = был создан, чтобы быть яснее, поскольку = также является оператором эквивалентности в SQL. WHERE x = 1; (большинство языков компьютера - ==)

+0

heh .. который задает вопрос, почему черт не просто использовал '==' и '=' как остальную вселенную? – billynoah

Смежные вопросы