मूल रूप से, MySQL कुछ भविष्य के काम के लिए रास्ता साफ करने के लिए मान फ़ंक्शन के लंबे समय से गैर-मानक उपयोग को हटाने की ओर देख रहा है जहां SQL मानक कुछ अलग के लिए VALUES कीवर्ड का उपयोग करने की अनुमति देता है, और क्योंकि VALUES फ़ंक्शन सबक्वायरीज़ में कैसे काम करता है या नहीं ON DUPLICATE KEY UPDATE क्लॉज में आश्चर्यजनक हो सकता है।
आपको VALUES क्लॉज में एक उपनाम जोड़ना होगा और फिर ON DUPLICATE KEY UPDATE क्लॉज में गैर-मानक VALUES फ़ंक्शन के बजाय उस उपनाम का उपयोग करना होगा, उदा। बदलें
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
करने के लिए
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
(यह केवल mysql 8+ पर काम करता है, पुराने संस्करणों पर या कम से कम 10.7.1 के माध्यम से mariadb के किसी भी संस्करण में नहीं)
https://dev.mysql.com/worklog/task/?id=से 13325 :