/ / MySQL - вмъкване или обновяване на редове между таблиците - mysql

MySQL - вмъкване или обновяване на редове между таблици - mysql

ТаблицаA: ДОКУМЕНТ ЗА САМОЛИЧНОСТ, поща, екип, [други колони]

ТаблицаB: ДОКУМЕНТ ЗА САМОЛИЧНОСТ, поща, екип, [други колони]

ID е основният ключ в двете таблици. Трябва да работя през всеки ред в TableB и:

  1. Ако ID не съществува в TableA, вмъкнете нови колони, използващи ред Идентификационен номер, поща, екип (само)
  2. Ако ID съществува в TableA, актуализирайте реда с нова стойност за поща (само)
  3. Идентификационните номера, които съществуват в таблица, но не в таблица, трябва да са остават непроменени

Аз имам :

INSERT INTO tablea (id,mail,team) (SELECT id,mail,team FROM tableb)
ON DUPLICATE KEY update tablea SET tablea.mail=tableb.mail;

Това не работи - мисля, че имам нужда от присъединяване, за да направя последната команда SET валидна, но не съм сигурна в тази част, може ли някой да помогне?

Много благодаря

Отговори:

0 за отговор № 1

Както е документирано по-долу INSERT ... ON DUPLICATE KEY UPDATE Синтаксис:

Можете да използвате VALUES(col_name) функция в UPDATE клауза, за да се позове на стойностите на колони от INSERT част от INSERT ... ON DUPLICATE KEY UPDATE изявление. С други думи, VALUES(col_name) в ON DUPLICATE KEY UPDATE клауза се отнася до стойността на col_name които биха били вмъкнати, ако не е възникнал конфликт с дублиращ се ключ. Тази функция е особено полезна при многоредови вложки.

Следователно:

INSERT INTO tablea (id, mail, team)
SELECT id, mail, team FROM tableb
ON DUPLICATE KEY UPDATE mail = VALUES(mail)