Mysql update table1 сравнить с таблицей2 - PullRequest
0 голосов
/ 18 ноября 2011

В моей базе данных mysql у меня есть 2 таблицы с одним и тем же полем в обоих.

Мне нужно обновить все записи в таблице2, где таблица1 имеет одинаковый id_customer и поля не пусты.

Пример:

table1

id | имя | фамилия | id_customer | электронная почта

1|jon|jack|12|hello@me.com

table2

id_customer | имя | фамилия | электронная почта

12 ||jack|hello@me.com

В запросе нужно обновить table2, добавив "jon" на имя

Есть идеи как?

Спасибо

Ответы [ 2 ]

1 голос
/ 18 ноября 2011

Попробуйте это -

UPDATE table1 t1
  JOIN table2 t2
    ON t1.customer_id = t2.customer_id
SET
  t2.name = IF(t2.name IS NULL OR t2.name = '', t1.name, t2.name),
  t2.email = IF(t2.email IS NULL OR t2.email = '', t1.email, t2.email),
  t2.sur_name = IF(t2.sur_name IS NULL OR t2.sur_name = '', t1.sur_name, t2.sur_name);
0 голосов
/ 18 ноября 2011
update table2 
set table2.name = table1.name,
table2.email = table1.email,
table2.sur_name = table1.sur_name 
where table2.customer_id = table1.customer_id

Полагаю, было бы лучше присоединиться к customer_id, если оно доступно в обеих таблицах (как в примере).Более того, если нам нужно обновить table1 на основе table1, то можем ли мы обновить все поля, если да, то вышеуказанный запрос будет выполнен, иначе вы можете взглянуть на предложение CASE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...