【问题标题】:SQL update column from another columnSQL 从另一列更新列
【发布时间】:2014-02-01 22:07:47
【问题描述】:

我有一个类似于这里问题的场景:Replacing a sql column value based on a column another table

我已经使用下面的代码尝试了这种方法:

update stager."Supplier" set genid=supplierdim.genid
from stager."Supplier" 
join stager.supplierdim on ("Supplier".company_name=supplierdim.company_name)

我正在使用 pgAdmin,但我不断收到此错误:表名“供应商”指定了多次。

我做错了什么吗?我需要将表 stager."Supplier" 的字段替换为 stager.supplierdim 中的相应字段,具体取决于公司名称,这是两个表中的字段。我这样做是为了将数据从一个表映射到另一个表。

【问题讨论】:

    标签: sql postgresql join mapping sql-update


    【解决方案1】:

    由于您所指的问题是针对 SQL Server 标记的,因此该数据库的正确语法如下:

    update s
         set genid = sd.genid
       from stager."Supplier" s join
            stager.supplierdim sd
            on s.company_name = sd.company_name;
    

    编辑:

    MySQL 中的语法是:

    update stager."Supplier" s join
          stager.supplierdim sd
          on s.company_name = sd.company_name;
       set s.genid = sd.genid;
    

    编辑二:

    以及用于此的通用 SQL:

    update stager.Supplier
        set genid = (select min(genid)
                     from stager.supplierdim sd
                     where Supplier.company_name = sd.company_name
                    );
    

    【讨论】:

    • 你用的是什么数据库?
    • 数据库名称是 Tastrade,stager 是其中的一种模式
    • 当我使用您在更新阶段放置的 MySQL 版本时。"Supplier" s join ... 我收到此错误:ERROR: syntax error at or near "join"
    猜你喜欢
    • 2011-04-18
    • 2016-11-30
    • 1970-01-01
    • 2022-01-23
    • 2021-10-28
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多