【发布时间】:2015-10-30 11:21:02
【问题描述】:
我有两张桌子t1 和t2:
t1 t2
------------- -------------
NAME | CODE NAME | CODE
------------- -------------
ABC | 1651 KKK | 127
CDE | 127 KKK | 127
SKND | 127 AAA | 66
BBB | 1651
我想更新t1 中name 列中的值以匹配t2 中name 列中的值。
在t1 中,code 的值可以有不同的name 值,但在t2 中,一个code 始终具有相同的name,但是具有相同code 的行更多,因为@ 987654335@ 有其他不同的列。
我试过这样的:
UPDATE t1
SET t1.NAME =
(
select t2.NAME
from t2
inner join t1
on t1.CODE = cast(t2.CODE as varchar2(128))
)
where t1.CODE in ( select t2.CODE from t2 );
问题是设置t1.NAME 的选择不会只返回1 行,因为t1 或t2 中的代码都不是唯一的。
我一直在寻找所有问题,但所有问题在他们想要的值的表中只有唯一值。
我认为我离解决方案还很远,我对 SQL 还是很陌生。
基本上我希望t1 看起来像这样:
-------------
NAME | CODE
-------------
BBB | 1651
KKK | 127
KKK | 127
我使用Oracle SQL Developer,所以我不能直接在Update内部使用Select。
【问题讨论】:
-
请删除不涉及产品的标签。
标签: sql oracle sql-update