MySQL документация е съвсем ясен по въпроса:
Като общо правило, никога не трябва да присвоявате стойност на потребителска променлива и да четете стойността в рамките на същия израз. Може да получите очакваните резултати, но това не е гарантирано. Редът на оценка за изрази, включващи потребителски променливи, е недефиниран и може да се промени въз основа на елементите, съдържащи се в даден израз; в допълнение, този ред не е гарантирано, че е същият между версиите на MySQL Server. В SELECT @a, @a:[email protected] +1, ..., може да си помислите, че MySQL първо ще оцени @a и след това ще направи assignmentssecond. Въпреки това, промяната на израза (например чрез добавяне на клауза GROUP BY, HAVING или ORDER BY) може да накара MySQL да избере план за изпълнение с различен ред на оценка.
Можете да правите каквото искате, като използвате подзаявка:
select @z, @z*2
from (SELECT @z:=sum(item)
FROM TableA
) t;