SQL Dev:使用where语句从另一个表的列更新列

时间:2018-03-01 18:36:58

标签: sql-update

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

表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,其中table1.dirty1 = table2.dirty2,代码是< 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 个答案:

答案 0 :(得分:0)

更新:对于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;