Расширенный MySql Query: обновить таблицу с информацией из другой таблицы - PullRequest
37 голосов
/ 29 июля 2009

Я хотел бы обновить таблицу в mySql данными из другой таблицы.

У меня есть две таблицы "люди" и "бизнес". Таблица сотрудников связана с бизнес-таблицей столбцом с именем «business_id».

Необходимая структура таблицы, первичный ключ помечен звездочкой (Таблица: столбцы): Люди: * business_id, * sort_order, email Бизнес: * business_id, электронная почта

Я хотел бы обновить столбец электронной почты бизнес-таблицы, указав в ней электронную почту из таблицы сотрудников, что-то вроде этого (я знаю, что мне здесь чего-то не хватает):

UPDATE business b SET email = (SELECT email  from People p where p.business_id = b.business_id AND sort_order = '1') WHERE b.email = ''; 

Имеет ли это смысл? Возможно ли это?

Ответы [ 3 ]

97 голосов
/ 29 июля 2009
UPDATE business b, people p
   SET b.email = p.email
 WHERE b.business_id = p.business_id
   AND p.sort_order = '1'
   AND b.email = ''
14 голосов
/ 29 июля 2009

Обратите внимание, если sort_order является INT, то не используйте '1' - используйте 1:

UPDATE business b
JOIN People p
ON p.business_id = b.business_id
AND p.sort_order = '1'
SET b.email = p.email
WHERE b.email = '';
0 голосов
/ 01 июня 2018

Попробуйте, у меня все работает нормально.

Update table a, table b
Set a.importantField = b.importantField,
a.importantField2 = b.importantField2
where a.matchedfield = b.matchedfield;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...