MySQL dokumentacja jest w tej kwestii całkiem jasne:
Zgodnie z ogólną zasadą, nigdy nie należy przypisywać wartości do zmiennej użytkownika i odczytywać wartości w ramach tej samej instrukcji. Możesz uzyskać rezultaty, których oczekujesz, ale nie jest to gwarantowane. Kolejność oceny wyrażeń zawierających zmienne użytkownika jest niezdefiniowana i może się zmieniać w zależności od elementów zawartych w danej instrukcji; ponadto nie ma gwarancji, że ta kolejność będzie taka sama między wydaniami serwera MySQL. W SELECT @a, @a:przykł[email protected] +1, ... możesz pomyśleć, że MySQL najpierw oceni @a, a potem wykona przypisanie. Jednak zmiana instrukcji (na przykład przez dodanie klauzuli GROUP BY, HAVING lub ORDER BY) może spowodować, że MySQL wybierze plan wykonania z inną kolejnością oceny.
Możesz robić, co chcesz, używając podzapytania:
select @z, @z*2
from (SELECT @z:=sum(item)
FROM TableA
) t;