sql >> Database >  >> RDS >> Mysql

Mysql 'VALUES-functie' is verouderd

Kortom, mysql is op zoek naar het verwijderen van een langdurig niet-standaard gebruik van de waardenfunctie om de weg vrij te maken voor toekomstig werk waarbij de SQL-standaard het gebruik van een VALUES-sleutelwoord voor iets heel anders toestaat, en omdat hoe de VALUES-functie werkt in subquery's of niet in een ON DUPLICATE KEY UPDATE-clausule kan verrassend zijn.

U moet een alias toevoegen aan de VALUES-clausule en vervolgens die alias gebruiken in plaats van de niet-standaard VALUES-functie in de ON DUPLICATE KEY UPDATE-clausule, b.v. wijzigen

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

naar

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

(Dit werkt alleen op mysql 8+, niet op oudere versies of in elke versie van mariadb tot en met 10.7.1)

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




  1. Wanneer kunnen we een identificatienummer gebruiken in plaats van de naam in PostgreSQL?

  2. LijstAGG in SQLSERVER

  3. psql:server heeft de verbinding onverwacht gesloten

  4. Kan parameter 2 niet doorgeven via referentie - uuid PDO