Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql 'VALUES-Funktion' ist veraltet

Grundsätzlich versucht mysql, eine seit langem nicht standardmäßige Verwendung der Wertefunktion zu entfernen, um den Weg für zukünftige Arbeiten freizumachen, bei denen der SQL-Standard die Verwendung eines VALUES-Schlüsselworts für etwas ganz anderes erlaubt, und um herauszufinden, wie die VALUES-Funktion in Unterabfragen funktioniert oder nicht in einer ON DUPLICATE KEY UPDATE-Klausel kann überraschend sein.

Sie müssen der VALUES-Klausel einen Alias ​​hinzufügen und diesen Alias ​​dann anstelle der nicht standardmäßigen VALUES-Funktion in der ON DUPLICATE KEY UPDATE-Klausel verwenden, z. ändern

INSERT INTO foo (bar, baz) VALUES (1,2)
ON DUPLICATE KEY UPDATE baz=VALUES(baz)

zu

INSERT INTO foo (bar, baz) VALUES (1,2) AS new_foo
ON DUPLICATE KEY UPDATE baz=new_foo.baz

(Dies funktioniert nur auf mysql 8+, nicht auf älteren Versionen oder in irgendeiner Version von Mariadb bis mindestens 10.7.1)

Von https://dev.mysql.com/worklog/task/?id=13325 :