Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql 'Funkcja WARTOŚCI' jest przestarzała

Zasadniczo mysql dąży do usunięcia od dawna niestandardowego użycia funkcji wartości, aby utorować drogę do niektórych przyszłych prac, w których standard SQL pozwala na użycie słowa kluczowego WARTOŚCI do czegoś zupełnie innego i ponieważ funkcja WARTOŚCI działa w podzapytaniach, czy nie w klauzuli ON DUPLICATE KEY UPDATE może być zaskakujące.

Należy dodać alias do klauzuli VALUES, a następnie użyć tego aliasu zamiast niestandardowej funkcji VALUES w klauzuli ON DUPLICATE KEY UPDATE, np. zmiana

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

do

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

(Działa to tylko na mysql 8+, nie na starszych wersjach lub w jakiejkolwiek wersji mariadb do co najmniej 10.7.1)

Od 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. Zaznacz WSZYSTKIE pola zawierające tylko WIELKIE litery

  2. CryptDB - nie można połączyć się z serwerem proxy (BŁĄD 1105 (HY000):(proxy) wszystkie backendy nie działają)

  3. Zapytanie echa przed wykonaniem i bez wykonania w aktywatorze kodu Active Record

  4. Policzyć duplikaty rekordów w tabeli Mysql?

  5. Konwertuj skrypt MySQL na H2