Mysql:更新表,选择另一个表的最大值

Mysql: Update table with select max of another table

本问题已经有最佳答案,请猛点这里访问。

我的MySQL服务器中有两个不同的数据库。

1
2
3
4
5
6
7
8
9
10
11
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,设置db1.contacts.contacts表的db2.paperworks.contact_id=max(db1.contacts.code),其中db2.paperworks.name=db1.contacts.name

我设计的输出应该是:

查询db2.paperworks后的第二个表:

1
2
id | name | contact_id
1  | foo  | 210

这是我的问题:

1
2
3
4
UPDATE DB2.paperworks
JOIN DB1.contacts
ON DB2.paperworks.name = DB1.contacts.name
SET DB2.paperworks.contact_id = DB1.contacts.code

我不明白如何写"max(code)"条件。你能帮我吗?


稍微简单一点的update形式就可以做到这一点:

1
2
3
4
5
6
7
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
);

试试这个:

1
2
3
4
5
6
UPDATE DB2.paperworks
SET DB2.paperworks.contact_id = (
    SELECT MAX(DB1.contacts.code)
    FROM DB1.contacts
    WHERE DB2.paperworks.name = DB1.contacts.name
)