MySQL दस्तावेज़ीकरण इस पर बिल्कुल स्पष्ट है:
<ब्लॉकक्वॉट>एक सामान्य नियम के रूप में, आपको कभी भी उपयोगकर्ता चर के लिए कोई मान निर्दिष्ट नहीं करना चाहिए और उसी कथन के भीतर मान को पढ़ना चाहिए। आपको अपेक्षित परिणाम मिल सकते हैं, लेकिन इसकी गारंटी नहीं है। उपयोगकर्ता चर वाले भावों के मूल्यांकन का क्रम अपरिभाषित है और किसी दिए गए कथन में निहित तत्वों के आधार पर बदल सकता है; इसके अलावा, यह आदेश MySQL सर्वर के रिलीज के बीच समान होने की गारंटी नहीं है। SELECT @a, @a:[email protected] में +1, ..., आप सोच सकते हैं कि MySQL पहले @a का मूल्यांकन करेगा और फिर एक असाइनमेंटसेकंड करेगा। हालांकि, स्टेटमेंट बदलने (उदाहरण के लिए, ग्रुप बाय, हैविंग, या ऑर्डर बाय क्लॉज जोड़कर) MySQL को मूल्यांकन के एक अलग क्रम के साथ निष्पादन योजना का चयन करने का कारण हो सकता है।
आप सबक्वायरी का उपयोग करके वह कर सकते हैं जो आप चाहते हैं:
select @z, @z*2
from (SELECT @z:=sum(item)
FROM TableA
) t;