用另一个表中的值更新一个表

Posted

tags:

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

很抱歉,这个非常基础的新手数据库问题...

我有两个具有相同列的表,但要用第二个表中相应列的值替换第一个表中一个列的值。

即table1:姓名,年龄table2:姓名,年龄

每个表具有相同的“名称”值,只是年龄不同。

从算法上讲:对于表1中的每一行,在表2中找到具有相同名称的行,并使表1.age = table2.age

数据库是Oracle。我已经尝试过类似的东西

update table1 set table1.age = (select table2.age where table2.name = table1.name)

认为如果需要的话,它可能会进行隐式联接,但是没有运气。我也尝试过明确地进行内部连接,但没有运气。

谢谢!

答案
尝试使用pl / sql循环:

begin for t2 in ( select name, age from table2 ) loop update table1 t1 set t1.age=t2.age where t1.name = t2.name; end loop; end;

另一答案
您仅会在子查询中错过from子句:

update table1 t1 set t1.age = (select t2.age from table2 t2 where trim(t2.name) = trim(t1.name) )

并且使用trim()是针对字符串类型值的周围(前导和结尾)空格的不错选择。

以上是关于用另一个表中的值更新一个表的主要内容,如果未能解决你的问题,请参考以下文章

用另一个表中的值更新一个表

用另一个表上的值更新新添加的列

用另一个表中的最早日期更新表

用另一个表中的最新值更新

用另一个表中的数据更新一个表[重复]

用另一个表中的随机条目更新表的列