sql - 通过加入4个表来更新sql表
问题描述
我试图通过加入 4 个表来更新 sql 表,下面是查询
UPDATE DC
SET M_CA_PRO_ELG = CPTY_UDF.M_CA_PRO_ELG
FROM COMD_TABLE DC
JOIN EXT_TABLE TRN_EXT ON DC.M_NB = TRN_EXT.M_REF
JOIN HDR_TABLE TRN_HDR ON TRN_EXT.M_TR_REF = TRN_HDR.M_NB
JOIN CPDF_TABLE CPDF ON TRN_HDR.M_COUNTRPART= CPDF.M_ID
JOIN COUNTERP_TABLE CPTY_UDF ON CPDF.M_LBL=CPTY_UDF.M_LBL
WHERE TRN_HDR.M_STATUS <> 'FISHING'
下面是遇到的错误
错误报告:SQL 错误:ORA-00933: SQL 命令未正确结束 00933. 00000 - “SQL 命令未正确结束”
更新 1:这个版本也不起作用,说 01407. 00000 -“无法将 (%s) 更新为 NULL”,但选择中根本没有空值
update COMD_TABLE DC SET DC.M_CA_PRO_ELG =
(
select CPTY_UDF.M_CA_PRO_ELG from COUNTERP_TABL CPTY_UDF,EXT_TABLE TRN_EXT,HDR_TABLE TRN_HDR ,CPDF_TABLE CPDF
where DC.M_NB = TRN_EXT.M_REF and TRN_EXT.M_TR_REF = TRN_HDR.M_NB and TRN_HDR.M_COUNTRPART= CPDF.M_ID and CPDF.M_LBL=CPTY_UDF.M_LBL
and TRN_HDR.M_STATUS <> 'FISHING'
)
更新 2:
WITH CA_PROVINCE_DATA AS
(
SELECT CPTY_UDF.M_CA_PRO_ELG AS CA_PRO ,DC.M_NB AS M_NB
FROM EXT_TABLE
JOIN HDR_TABLE TRN_HDR ON TRN_EXT.M_TR_REF = TRN_HDR.M_NB
JOIN CPDF_TABLE CPDF ON TRN_HDR.M_COUNTRPART= CPDF.M_ID
JOIN COUNTERP_TABLE CPTY_UDF ON CPDF.M_LBL=CPTY_UDF.M_LBL
WHERE TRN_HDR.M_STATUS <> 'FISHING'
)
UPDATE COMD_TABLE SET M_CA_PRO_ELG = CA_PROVINCE_DATA.CA_PRO WHERE
M_NB= CA_PROVINCE_DATA.M_NB
此查询在 ORACLE 中是否有效,或者是否有任何其他方法可以实现此目的。
感谢你的帮助
谢谢
解决方案
对我来说,这看起来像是 SQL Server 更新。我喜欢的 SQL Server 的一个功能。我相信您正在寻找的 Oracle 更新如下。如果您希望更新所有记录,请忽略“存在位置”部分。
UPDATE dc
SET m_ca_pro_elg =
(SELECT cpty_udf.m_ca_pro_elg
FROM ext_table trn_ext
JOIN hdr_table trn_hdr ON trn_ext.m_tr_ref = trn_hdr.m_nb
JOIN cpdf_table cpdf ON trn_hdr.m_countrpart = cpdf.m_id
JOIN counterp_table cpty_udf
ON cpdf.m_lbl = cpty_udf.m_lbl
WHERE dc.m_nb = trn_ext.m_ref AND trn_hdr.m_status <> 'FISHING')
WHERE EXISTS
(SELECT NULL
FROM ext_table trn_ext
JOIN hdr_table trn_hdr ON trn_ext.m_tr_ref = trn_hdr.m_nb
JOIN cpdf_table cpdf ON trn_hdr.m_countrpart = cpdf.m_id
JOIN counterp_table cpty_udf
ON cpdf.m_lbl = cpty_udf.m_lbl
WHERE dc.m_nb = trn_ext.m_ref AND trn_hdr.m_status <> 'FISHING')
推荐阅读
- javascript - 如何获取数组中具有相同“父”元素的项目数?
- python - 关于请求 url 响应 404 的问题,但在浏览器和抓取标签中成功
- r - R包gbm中使用哪个损失函数进行多项分布?
- node.js - 在 Linux(Ubuntu)的 Windows 子系统中运行的 Node.js 应用程序不会从 .env 文件加载值
- reactjs - mapDispatchToProps 在按钮单击时不起作用 - React Native
- python - 如何在基于 id 的 HTML jinja 模板中评估此条件
- javascript - 如何在我的自定义滑块 JavaScript 代码中插入自动播放选项
- javascript - 反应:什么都没有返回,而三元总是返回一些东西
- php - 带有原始 SQL 语句的 Laravel 查询构建器返回语法错误
- flutter - 如何在 Flutter 中画一条带尖三角形的线?