代码之家  ›  专栏  ›  技术社区  ›  MoxGoat

SQL开发人员:使用where语句从另一个表的列更新列

  •  0
  • MoxGoat  · 技术社区  · 8 年前

    我有以下两个表示例(包含更多列的大型数据库)

    表1

    Dirty1     code
    
    Ne yok     553
    Bufflo     5767
    Ne yok     -345
    Tchicgo    -35
    Albunny    543
    Dtroit     -443
    Bufflo     -4534
    Matatan    -45
    Ne yok     -345
    

    表2

    Dirty2      Standardized
    Manhatahn   Manhattan
    Ne yok      New York
    Matatan     Manhattan
    Brocklyn    Brooklyn
    Albunny     Albany
    Bufflo      Buffalo
    Baffalow    Buffalo
    

    我想用表2中的标准化城市格式更新表1,其中表1。dirty1=表2。目录2和代码为<0

    所以输出应该如下所示

    输出表1

    Dirty1      code
    Ne yok      553
    Bufflo      5767
    New York    -345
    Tchicgo    -35
    Albunny     543
    Dtroit     -443
    Buffalo     -4534
    Manhattan   -45
    New York    -345
    

    我还想确保跳过表2中没有标准化表单的任何表单(例如:Dtroit和tchicgo)

    1 回复  |  直到 8 年前
        1
  •  0
  •   Kylie    8 年前

    更新:针对Oracle-

    UPDATE table1 SET table1.Dirty1= (SELECT table2.Standardized FROM table2 
                    WHERE table1.Dirty1=table2.Dirty2)
    WHERE table1.code<0 AND EXISTS (SELECT table2.Standardized FROM table2 
                    WHERE table1.Dirty1=table2.Dirty2);
    

    注意,我没有使用Oracle,也没有对其进行测试,但它应该可以工作。

    这应该可以做到(MS-SQL)-

    UPDATE table1 INNER JOIN table2 ON table1.Dirty1=table2.Dirty2 SET 
    table1.Dirty1=table2.Standardized WHERE table1.code<0;