首页 > 解决方案 > 从两个表 oracle 更新

问题描述

我有两张桌子。

  1. J_YAD_PICT(表名)、GALLERY_DISP_FLG(列)
  2. J_YAD_CGR_PICT(表名)、Y_CGR_FLG(列)

当 J_YAD_CGR_PICT 中的 Y_CGR_FLG 不为空时,需要将 GALLERY_DISP_FLG 设置为 1。

我已经执行了这个

Update A
SET A.GALLERY_DISP_FLG = 
  (CASE WHEN b.Y_CGR_FLG IS NOT NULL) THEN '1' 
        ELSE A.GALLERY_DISP_FLG 
   END
FROM J_YAD_PICT A inner join J_YAD_CGR_PICT B 
on A.YP_ID = B.YP_ID;

但鉴于此错误:

SQL 错误:ORA-00905:缺少关键字

任何人都可以帮助我吗?

标签: oraclejoinsql-update

解决方案


像这样的东西?

update j_yad_pict p set
  p.gallery_disp_flg = (select case when c.y_cgr_flg is not null then '1'
                                    else p.gallery_disp_flg
                               end
                        from j_yad_cgr_pict c
                        where c.yp_id = p.yp_id
                       )
where exists (select null from j_yad_cgr_pict c1
              where c1.yp_id = p.yp_id
             );  

EXISTS查询的一部分在这里,这样您就不会更新表NULL中没有匹配的行(到)J_YAD_CGR_PICT


推荐阅读