【问题标题】:Update from SQL JOIN从 SQL JOIN 更新
【发布时间】:2013-09-12 03:49:20
【问题描述】:

假设我有一组记录,其中一个表上有一个user_id 列,还有一个users 表,两个表都有一个email 列。如何在第一个表上执行UPDATE 以设置电子邮件地址匹配的mytable.user_id = users.id

谢谢!

【问题讨论】:

    标签: mysql sql postgresql join sql-update


    【解决方案1】:

    这是一个update 和一个join。语法因数据库而异。 MySQL 的语法是:

    update SetOfRecords sor join
           users u
           on sor.user_id = users.id
        set sor.email = u.email;
    

    Postgres 语法不同,因为它使用了set 之后的from 子句。 ANSI 标准语法应该适用于两个数据库:

    update SetOfRecords
        set email = (select max(email) from users u where SetOfRecords.user_id = u.id);
    

    【讨论】:

    • 有道理,如果我想设置 user_id 字段而不是电子邮件字段(我已经在记录中拥有的值),它是否有效?
    • 对于 Postgres,对我有用的是 UPDATE mytable SET user_id = users.id FROM users WHERE mytable.email = users.email
    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 2013-01-07
    • 2021-02-04
    • 2017-01-16
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多