update table无法修改Map到非键保留tqbles的列

yv5phkfx  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(183)

**

Update (select l1,l1desc,label,label_desc 
       From member_dig m Join member_label ml 
       On m.member_id =ml.member_id) 
t Set t.l1=t.label, T.l1desc=t.label_desc;

**

当我单独运行select时,结果看起来很好,但我的更新失败,出现“cannot modify a column which maps to a non key preserved table”错误。

eanckbw9

eanckbw91#

甲骨文对任何东西都很挑剔 JOIN s在 UPDATE s。另一方面,它具有使用单个子查询更新多个列的方便功能。
所以你可以这样做:

update member_dig m 
    set (l1, l1desc) = (select ml.label, ml.label_desc
                        from member_label ml
                        where m.member_id = ml.member_id
                       )
    where exists (select 1
                  from member_label ml
                  where m.member_id = ml.member_id
                 );

因为你的问题不清楚,所以我不得不猜测哪个表要更新,列从哪里来。然而,这类事情应该做你想做的。

相关问题