Mysql:用另一个表的选择最大值更新表[重复]
Posted
技术标签:
【中文标题】Mysql:用另一个表的选择最大值更新表[重复]【英文标题】:Mysql: Update table with select max of another table [duplicate] 【发布时间】:2017-06-05 14:38:57 【问题描述】:我的 mysql 服务器中有 2 个不同的数据库。
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 后的第二张表:
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)" 条件。你能帮帮我吗?
【问题讨论】:
不一定重复,因为这也可以通过使用相关子查询的简单更新来完成,如下面的答案所示。 @SlimsGhost,大多数问题都有多个可能的答案。这并不意味着他们不能有重复。我只是试图引导 OP 回答一个似乎与他自己相关的问题。 @Chris,很公平,只是不希望它只用一个指向可能不是理想答案的指针而关闭。 【参考方案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
);
【讨论】:
【参考方案2】:试试这个:
UPDATE DB2.paperworks
SET DB2.paperworks.contact_id = (
SELECT MAX(DB1.contacts.code)
FROM DB1.contacts
WHERE DB2.paperworks.name = DB1.contacts.name
)
【讨论】:
以上是关于Mysql:用另一个表的选择最大值更新表[重复]的主要内容,如果未能解决你的问题,请参考以下文章
用另一个 MySQL 表的值更新一个 MySQL 表(原始表的数据类型是 JSOn)