I grund och botten ser mysql på att ta bort en långvarig icke-standard användning av värdefunktionen för att bana väg för framtida arbete där SQL-standarden tillåter användning av ett VALUES-nyckelord för något helt annat, och för att hur VALUES-funktionen fungerar i underfrågor eller inte i en ON DUPLICATE KEY UPDATE-sats kan vara förvånande.
Du måste lägga till ett alias till VALUES-satsen och sedan använda det aliaset istället för den icke-standardiserade VALUES-funktionen i ON DUPLICATE KEY UPDATE-satsen, t.ex. ändra
INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)
till
INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz
(Detta fungerar bara på mysql 8+, inte på äldre versioner eller i någon version av mariadb till och med minst 10.7.1)
Från https://dev.mysql.com/worklog/task/?id=13325 :