2017-01-20 3 views
3

У меня есть 2 разных базы данных на моем сервере MySql.Mysql: Обновить таблицу с выбором макс другой таблицы

First table DB1.contacts: 

id | name | code 
1 | foo | 157 
2 | foo | 95 
3 | foo | 210 

Second table DB2.paperworks: 

id | name | contact_id 
1 | foo | 0 

Я хотел бы обновить DB2.paperworks, установите DB2.paperworks.contact_id = макс (DB1.contacts.code) таблицы DB1.contacts.contacts где DB2.paperworks.name = DB1.contacts.name

Мой desidered вывод должен быть:

Вторая таблица после DB2.paperworks запроса:

id | name | contact_id 
1 | foo | 210 

Это мой запрос:

UPDATE DB2.paperworks 
JOIN DB1.contacts 
ON DB2.paperworks.name = DB1.contacts.name 
SET DB2.paperworks.contact_id = DB1.contacts.code 

Я не понимаю, как написать che "MAX (code)" состояние. Не могли бы вы мне помочь?

+0

не обязательно дублировать, так как это также может быть сделано с помощью простого обновления с помощью связанного подзапроса, а как показано в ответе ниже. – SlimsGhost

+1

@SlimsGhost, в большинстве вопросов есть несколько возможных ответов. Это не значит, что у них не может быть дубликатов. Я просто пытаюсь направить OP на ответ на вопрос, который кажется соответствующим его собственному. – Chris

+0

@ Крис, справедливо, просто не хотел, чтобы он закрывался только указателем на то, что не может быть желательным ответом. – SlimsGhost

ответ

1

Немного проще форма update будет делать трюк:

UPDATE DB2.paperworks 
SET DB2.paperworks.contact_id = (
    select max(DB1.contacts.code) 
    from DB1.contacts 
    where DB1.contacts.name = DB2.paperworks.name 
    group by DB1.contacts.code 
); 
0

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

UPDATE DB2.paperworks 
SET DB2.paperworks.contact_id = (
    SELECT MAX(DB1.contacts.code) 
    FROM DB1.contacts 
    WHERE DB2.paperworks.name = DB1.contacts.name 
) 
Смежные вопросы