首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当tbl_2.valueC等于tbl_1valueD时更新tbl_1 set tbl_1.valueA = tbl2.valueB

当tbl_2.valueC等于tbl_1valueD时更新tbl_1 set tbl_1.valueA = tbl2.valueB
EN

Stack Overflow用户
提问于 2020-04-27 01:00:00
回答 1查看 43关注 0票数 0

正如标题所示-我正在尝试基于两个表中的公共值(但不是相同的列名)用另一个table.value更新table.value

首先,我删除源表中的所有重复记录。并计算剩余的行数--总数是93。

代码语言:javascript
复制
Select rowid, xfmid_value from w_valve_reftest;
Delete from w_valve_reftest a
where rowid> (select min(rowid)
from w_valve_reftest b where b.xfmid_value=a.XFMID_VALUE);
Select count(*) from w_valve_reftest;

接下来,我想用source.ref1_value中的值更新target.reference_1,用source.ref2_value where source.xfmid_value=target.xfm_id更新target.reference_2

这就是我所拥有的,但由于某些原因,它正在更新17,000+记录。而不是我期望的93。

代码语言:javascript
复制
update w_isolationvalve
set w_isolationvalve.reference_1=(select ref1_value from w_valve_reftest where w_isolationvalve.xfm_id=w_valve_reftest.xfmid_value);

update W_isolationvalve
set w_isolationvalve.reference_2=(select ref2_value from w_valve_reftest where w_isolationvalve.xfm_id=w_valve_reftest.xfmid_value);

我不是专家,但也不再是新手了。我已经用谷歌破解了这个问题。谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-04-27 01:15:24

您的第二个查询应该是:

代码语言:javascript
复制
update a
set reference_1=b.ref1_value,
refrence_2=b.ref2_value 
FROM w_isolationvalve a
JOIN w_valve_reftest b ON a.xfm_id=b.xfmid_value

至于更新计数,只有在xfm_id和xfmid_value是唯一的情况下,它才会是93。

还要注意非确定性更新。如果对于联接条件,select将有多个结果,则将对多个结果中的每个结果执行一次更新,而您将不知道最终得到的结果是什么。

这在Oracle中应该可以工作:

代码语言:javascript
复制
MERGE INTO w_isolationvalve  a
USING
(
SELECT * FROM w_valve_reftest 
)b
ON(a.xfm_id = b.xfmid_value)
WHEN MATCHED THEN UPDATE SET
a.reference_1 = b.ref1_value,
a.refrence_2 = b.ref2_value ;

因为你不喜欢合并。我认为这在Oracle中也应该是有效的:

代码语言:javascript
复制
UPDATE 
(SELECT a.reference_1, a.refrence_2, b.ref1_value , b.ref2_value
 FROM w_isolationvalve  a
 INNER JOIN w_valve_reftest b
 ON a.xfm_id = b.xfmid_value
) t
SET t.reference_1  = t.ref1_value ,
t.refrence_2 =t.ref2_value 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61444661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档