oracle - 从两个表 oracle 更新
问题描述
我有两张桌子。
- J_YAD_PICT(表名)、GALLERY_DISP_FLG(列)
- 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:缺少关键字
任何人都可以帮助我吗?
解决方案
像这样的东西?
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
。
推荐阅读
- android - Gradle 在 Android Studio 和 AppCenter 中都找不到 Flutter 构建的 APK
- protobuff.net - 类型不是预期的,并且无法推断出任何合同:(未知)IN C#
- fabricjs - 如何在fabric.js的一个角落添加2个控件?
- python - 如何使用 numpy.random 从某个分布中生成随机数?
- javascript - 如何将视频页面链接放在 jwplayer 上 iframe 的文本中
- asp.net-core - 使用 EasyNetQ 消费消息时出现异常
- retrofit2 - 改造 onFailure 但返回 http
- c++ - C++快速将int数组内容转储到文本文件中
- r - rvest html_table() 产生错误
- javascript - 按特定顺序列出 li 文本