ТаблицаA: ДОКУМЕНТ ЗА САМОЛИЧНОСТ, поща, екип, [други колони]
ТаблицаB: ДОКУМЕНТ ЗА САМОЛИЧНОСТ, поща, екип, [други колони]
ID е основният ключ в двете таблици. Трябва да работя през всеки ред в TableB и:
- Ако ID не съществува в TableA, вмъкнете нови колони, използващи ред Идентификационен номер, поща, екип (само)
- Ако ID съществува в TableA, актуализирайте реда с нова стойност за поща (само)
- Идентификационните номера, които съществуват в таблица, но не в таблица, трябва да са остават непроменени
Аз имам :
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)