从oracle的两个表更新
我有两张桌子从oracle的两个表更新,oracle,join,sql-update,Oracle,Join,Sql Update,我有两张桌子 J_YAD_PICT(表名),图库显示图(列) J_YAD_CGR_PICT(表名),Y_CGR_FLG(列) 当Y_CGR_FLG在J_YAD_CGR_PICT中不为空时,则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
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:缺少关键字
有人能帮我吗?您使用别名A的是哪张表 我建议这样试试
Update J_YAD_PICT 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;
像这样的
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
);
存在
查询的一部分在这里,这样您就不会更新J_YAD_CGR_PICT
表中不匹配的行(到NULL
)。当更新表J_YAD_PICT时,必须在内部选择中从表连接此表
UPDATE J_YAD_PICT A
SET A.GALLERY_DISP_FLG = (
SELECT CASE WHEN b.Y_CGR_FLG IS NOT NULL THEN '1' ELSE A.GALLERY_DISP_FLG END
FROM J_YAD_PICT A2
INNER JOIN J_YAD_CGR_PICT B ON A.YP_ID = B.YP_ID
WHERE A.ID = A2.ID);
请添加一些解释。中的
在SQL更新语句中无效(在标准SQL和Oracle中)