Bởi vì FROM (SELECT @foo AS foo)
được đánh giá trước @foo := 1
này . Về cơ bản, bất kỳ thứ gì trong FROM sẽ được đánh giá trước khi CHỌN của bạn.
Nó thực sự phải là null nhưng tôi đoán bạn đã gán cho biến phiên của mình một giá trị bằng 0 ở một nơi khác.