基于另外两张表更新字段值时出现SQL错误(42601)求助
问题分析与修正后的SQL语句
原语句存在三个问题导致报错(状态码42601为PostgreSQL语法错误):
- PostgreSQL不支持MySQL风格的
UPDATE ... JOIN语法,需改用UPDATE ... FROM写法 - 拼写错误:
'CashBck'应为目标值'CashBack' - 拼写错误:
ole.OrdeType应为字段名ole.OrderType
修正后的SQL语句(方式一:使用FROM关联表)
UPDATE OrderPayment op SET op.ordertypeCd = 'CashBack' FROM OrderSummaryInfo osi JOIN OrderLossEntity ole ON ole.id = osi.orderevententity WHERE op.OrderNumber = osi.OrderNumber AND op.ordertypeCD = 'Rewards' AND ole.OrderType = 'Indirect';
修正后的SQL语句(方式二:使用EXISTS子查询,逻辑更清晰)
UPDATE OrderPayment op SET ordertypeCd = 'CashBack' WHERE op.ordertypeCD = 'Rewards' AND EXISTS ( SELECT 1 FROM OrderSummaryInfo osi JOIN OrderLossEntity ole ON ole.id = osi.orderevententity WHERE osi.OrderNumber = op.OrderNumber AND ole.OrderType = 'Indirect' );
内容的提问来源于stack exchange,提问作者Anderson
相关产品推荐
相关产品推荐

