In this case, the assignment operator must be := and not = because = is treated as a comparison operator in non-SET statements:
mysql> mysql> SET @t1=0, @t2=1, @t3=2; Query OK, 0 rows affected (0.00 sec) mysql> mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3; +----------------------+------+------+------+ | @t1:=(@t2:=1)+@t3:=4 | @t1 | @t2 | @t3 | +----------------------+------+------+------+ | 5 | 5 | 1 | 4 | +----------------------+------+------+------+ 1 row in set (0.00 sec) mysql>