वास्तव में, वे दोनों असाइनमेंट ऑपरेटर हैं और मान निर्दिष्ट करने के लिए उपयोग किए जाते हैं लेकिन उनके बीच महत्वपूर्ण अंतर निम्नानुसार है:
= ऑपरेटर मान निर्दिष्ट करता है या तो SET स्टेटमेंट के भाग के रूप में या UPDATE स्टेटमेंट में SET क्लॉज के भाग के रूप में, किसी अन्य मामले में = ऑपरेटर को तुलना ऑपरेटर के रूप में व्याख्या किया जाता है। दूसरी ओर, := ऑपरेटर मान निर्दिष्ट करता है और इसे कभी भी तुलना ऑपरेटर के रूप में व्याख्या नहीं किया जाता है।
mysql> Update estimated_cost1 SET Tender_value = '8570.000' where id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> Update estimated_cost1 SET Tender_value := '8575.000' where id = 2; Query OK, 1 row affected (0.06 sec) Rows matched: 1 Changed: 1 Warnings: 0
उपरोक्त दो क्वेरीज में, हमने टेबल के मान को UPDATE करने के लिए = ऑपरेटर के साथ-साथ := ऑपरेटर का उपयोग किया है।
mysql> Set @A = 100; Query OK, 0 rows affected (0.01 sec) mysql> Select @A; +------+ | @A | +------+ | 100 | +------+ 1 row in set (0.00 sec) mysql> Set @B := 100; Query OK, 0 rows affected (0.00 sec) mysql> Select @B; +------+ | @B | +------+ | 100 | +------+ 1 row in set (0.00 sec)
उपरोक्त दो क्वेरीज में, हमने = ऑपरेटर और := ऑपरेटर का उपयोग उपयोगकर्ता वेरिएबल को मान निर्दिष्ट करने के लिए किया। हम देख सकते हैं कि दोनों स्थितियों में = ऑपरेटर और := ऑपरेटर का समान उपयोग और कार्यक्षमता है। लेकिन निम्न क्वेरी में = ऑपरेटर, तुलना ऑपरेटर के रूप में काम करता है और परिणाम 'TRUE' देता है यानी दोनों उपयोगकर्ता वेरिएबल्स @A और @B के समान मान हैं।
mysql> Select @A = @B; +---------+ | @A = @B | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)