Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql „функция VALUES“ е отхвърлена

По принцип mysql се стреми към премахване на дългогодишната нестандартна употреба на функцията за стойности, за да разчисти пътя за някаква бъдеща работа, където стандартът на SQL позволява използването на ключова дума VALUES за нещо много различно и защото как функцията VALUES работи в подзаявки или не в клауза ON DUPLICATE KEY UPDATE може да бъде изненадващо.

Трябва да добавите псевдоним към клаузата VALUES и след това да използвате този псевдоним вместо нестандартната функция VALUES в клаузата ON DUPLICATE KEY UPDATE, напр. промяна

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+, не и на по-стари версии или в която и да е версия на mariadb до поне 10.7.1)

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. дублиращи се записи mysql и php

  2. Изтриване на свързани записи в MySQL

  3. Как да възстановите дъмп на MySQL от хост към Docker контейнер

  4. Примери за DAYOFWEEK() – MySQL

  5. Как да показвате изображения от база данни в JSF