Короче говоря, при использовании 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
Кажется, это устарело: 'mysql> @num: = 0;' даст ошибку. – user198729
Является ли это действительным оператором MySQL? Можете ли вы определить такие переменные? –
Ради кого-либо, кто читает эти комментарии, он не устарел. И спасибо @AnthonyForloney за распространение основ. Вот почему я люблю stackoverflow. – billynoah