Protože toto FROM (SELECT @foo AS foo)
je vyhodnocena před tímto @foo := 1
. V podstatě cokoli v FROM bude vyhodnoceno před vaším SELECT.
Ve skutečnosti by to mělo být null, ale předpokládám, že jste své proměnné relace přiřadili hodnotu nula někde jinde.