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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Dev:使用where语句从另一个表的列更新列相关的知识,希望对你有一定的参考价值。

我有以下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)

答案

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

以上是关于SQL Dev:使用where语句从另一个表的列更新列的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句优化

sql语句优化方案

如何将我之前在 sql 中创建的列更改为外键

SQL查询效率where语句条件

怎么显示Oracle数据库表中的列

SQL语句中两个表的连接