如何使用 mySQL 使用当前数据库 table 中的信息更新不同的数据库 table?

How to update a different database table with info from my current database table, using mySQL?

我正在尝试编写 SQL 查询来更新不同数据库中的字段(与 phpMyAdmin 托管在同一服务器上)。我只希望它更新最近的行,因为在添加新用户(在该新用户上)后查询将直接 运行 。我的目标输出是将此用户的用户名字段更改为与原始数据库中用户的电子邮件字段相同。语法错误状态

'syntax to use near 'FROM db2.users AS "data" WHERE db1.user.email = ...' at line 3'

我看不出哪里出错了 - 我看到另一个答案,用户说 mySQL 不支持 FROM 关键字,但是我找不到其他支持的地方那个。这是我目前的代码:

UPDATE db1.user
SET username = data.username
FROM db2.users AS "data"
WHERE db1.user.email = data.email
AND db1.user.id = (
SELECT MAX(id) 
FROM db1.user
)
LIMIT 1

如果有人知道我哪里出错了,将不胜感激!

在 MySQL 中,语法为:

UPDATE db1.user u JOIN
       db2.users u2
       ON u.email = u2.email JOIN
       (SELECT MAX(u2.id) as max_id
        FROM db1.user u2
       ) uu
       ON uu.max_id = u.id
    SET u.username = u2.username;

备注:

您没有通过电子邮件过滤以获得最大值似乎很奇怪 id,但这就是您的问题的陈述方式。此外,MySQL 不支持 LIMIT 多 table UPDATE 查询。

在您的 SQL 中,您可以使用子查询,我建议您尝试以下操作:

UPDATE
    db1.user
SET
    username = (
    SELECT
        data.email
    FROM
        db2.users AS "data"
    WHERE
        db1.user.email = data.email)
WHERE
    db1.user.id = (
    SELECT
        MAX(id)
    FROM
        db1.user)
LIMIT 1;