含JOIN的AND NOT EXISTS语句报Missing Right Parenthesis错误求助
解决你的SQL "Missing Right Parenthesis" 错误
嘿,这个报错我简直太熟悉了!问题根源其实是子查询里的语法顺序搞反了——你把WHERE条件写在了JOIN子句前面,数据库解析到JOIN的时候完全懵了,才抛出了指向J的括号错误(虽然提示看起来像是括号问题,但本质是语法顺序不对)。
错误原因拆解
你的原语句里,子查询的结构是:
SELECT 1 FROM gift g WHERE [条件] JOIN primary_gift pg ON [连接条件]
这不符合SQL的语法规范:JOIN是用来关联表的,必须紧跟在FROM(或之前的JOIN)之后,而WHERE是用来过滤结果集的,得放在所有表连接完成之后。数据库看到WHERE后面突然冒出来JOIN,就会认为你漏写了括号或者语法混乱。
修正后的语句
把JOIN移到WHERE前面,调整后的正确写法是:
AND NOT EXISTS ( SELECT 1 FROM gift g JOIN primary_gift pg ON pg.prim_gift_receipt_number = g.gift_receipt_number AND pg.prim_gift_source_of_info = 'AW' WHERE g.gift_donor_id = xc5.id_number AND g.gift_associated_amount + g.gift_associated_credit_amt > 0 )
额外小提醒
写SQL的时候一定要牢记子句的语法顺序:FROM/JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY,顺序错了很容易触发这类看似奇怪的语法错误哦。
内容的提问来源于stack exchange,提问作者JD23
相关产品推荐
相关产品推荐

