【问题标题】:Mysql: Update table with select max of another table [duplicate]Mysql:用另一个表的选择最大值更新表[重复]
【发布时间】: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,很公平,只是不希望它只用一个指向可能不是理想答案的指针而关闭。

标签: mysql


【解决方案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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2023-01-06
      • 2017-05-23
      相关资源
      最近更新 更多