用另一个表中的值更新一个表
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()
是针对字符串类型值的周围(前导和结尾)空格的不错选择。
以上是关于用另一个表中的值更新一个表的主要内容,如果未能解决你的问题,请参考以下文章