PostgreSQL中Merge语句报42601语法错误的问题求助
解决PostgreSQL MERGE语句的语法错误
错误原因
PostgreSQL的MERGE语法规则里,WHEN MATCHED THEN UPDATE子句不支持在UPDATE语句后直接追加WHERE条件。你原语句里在UPDATE set之后加WHERE的写法不符合PostgreSQL的语法规范,这才导致了SQL Error [42601]语法错误。
修正后的语句
MERGE /*+ parallel (16)*/ INTO psx_cluster_audit_t_1 a USING psx_cluster_cross_ref_t_1 b ON (a.psx_id = b.RECORD_ID AND a.PSX_BATCH_ID = b.PSX_BATCH_ID AND b.psx_batch_id = '2411121519014999') WHEN MATCHED AND a.mpc_new IS NULL THEN UPDATE SET mpc_new = b.mpc
修改说明
- 将原语句中UPDATE部分的
where a.mpc_new is null移动到WHEN MATCHED之后,作为匹配时的附加判断条件,符合PostgreSQL MERGE的语法要求。 - 保持原有的并行提示、关联条件和更新逻辑不变,仅调整条件位置以修复语法错误。
内容的提问来源于stack exchange,提问作者Bhargavi Ande
相关产品推荐
相关产品推荐

