You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UNION后使用LEFT JOIN出现SQL语法错误,请求排查修正

SQL语法错误排查与修正

错误点分析

  • 子查询缺失FROM关键字:SELECT * Product01和SELECT * Product02写法错误,数据库无法识别查询的目标表,需补充FROM关键字。
  • 表连接逻辑冲突:同时混用了旧版逗号分隔表的写法与标准JOIN语法,且重复引用已定义的表别名pr,导致语法冲突。
  • 条件表达式符号使用错误:WHERE子句中的p.purchase_status!=0"混合了错误的引号与反引号,字段条件无需多余符号包裹。
  • 动态变量格式混乱:IN (".$product_ids.")的引号转义不符合SQL语法规范,需根据变量类型调整引号使用。

修正后的SQL语句

SELECT 
    pp.product_id,
    p.shop_id,
    p.from_shop_id,
    p.purchase_type,
    pp.product_receive_qty AS purchase_qty,
    pp.purchase_product_cost * pp.product_qty AS total_cost,
    pr.product_code
FROM 
    PurchaseProduct pp
JOIN 
    Purchase p ON pp.purchase_id = p.purchase_id
LEFT JOIN  
    (SELECT * FROM Product01 
     UNION 
     SELECT * FROM Product02) AS pr ON pp.product_id = pr.product_id 
WHERE 
    pp.product_id IN ('".$product_ids."') 
    AND p.purchase_status != 0

补充说明

  • 统一使用标准JOIN语法,替代逗号分隔表的旧写法,提升SQL可读性与兼容性。
  • 若$product_ids为多值集合(如1,2,3或'A','B','C'),需确保PHP端生成的字符串格式符合SQL要求,避免语法错误。
  • UNION默认会去重,若需保留重复数据,可替换为UNION ALL。

内容的提问来源于stack exchange,提问作者Egven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 01:09:25