2017-01-20 15 views
3

MySqlサーバーに2つの異なるデータベースがあります。Mysql:別のテーブルのselect maxでテーブルを更新する

IはDB2.paperworksを更新したい
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 

は、DB1.contacts.contactsテーブルDB2.paperworks.name = DB1.contacts.nameのDB2.paperworks.contact_id = MAX(DB1.contacts.code)を設定しました

私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)"の書き方が分かりません。私を助けてくれますか? update

+0

を以下の回答に示されています。 – SlimsGhost

+1

@SlimsGhost、ほとんどの質問には複数の回答があります。それは彼らが重複を持つことができないことを意味しません。私はOPに、彼自身に関連すると思われる質問の答えを指示しようとしています。 – Chris

+0

@Chris、十分に公正で、それは望ましい答えではないかもしれないものへのポインタだけで閉じられることを望んでいませんでした。 – SlimsGhost

答えて

1

Aやや単純な形式は、トリックを行います:

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 
) 
関連する問題