sql >> Databasteknik >  >> RDS >> Mysql

Mysql 'VALUES function' är utfasad

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 :




  1. Gruppera ett kommaseparerat värde på vanliga data

  2. DAYOFMONTH() Exempel – MySQL

  3. Kan jag få en plpgsql-funktion att returnera ett heltal utan att använda en variabel?

  4. MySQL villkorlig ORDER BY ASC/DESC för datumkolumnen