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
) |
号