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

SQL/400查询需求:无匹配Client记录时保留Orders数据仅空关联列

解决方案:用左外连接保留主表数据

直接用标准SQL的LEFT JOIN(左外连接)就能解决你的问题,它会保留Orders表中符合条件的所有记录,哪怕Client表没有匹配数据,referenceNumber列自动返回NULL。

核心SQL语句如下:

SELECT 
    o.shipper,
    c.referenceNumber
FROM 
    Orders o
LEFT JOIN 
    Client c 
    ON o.mainorder = c.clientOrder
    AND c.ClientType = ?
WHERE 
    o.mainorder = ?
    AND o.Ordertype = ?

关键细节说明:

  • 左连接的作用:LEFT JOIN会以Orders表为基准,返回所有满足WHERE条件的Orders记录,关联的Client表如果没有匹配的clientOrder和ClientType,对应字段就填充NULL
  • 条件位置的重要性:必须把c.ClientType = ?放在ON子句里,而不是WHERE子句。如果放到WHERE里,会过滤掉Client表无匹配时的NULL记录,等同于内连接,又会出现结果集为空的情况
  • 参数对应:三个占位符?分别对应:要查询的Orders.mainorder值、Orders.Ordertype值、Client.ClientType值

SQL/400完全支持标准SQL的LEFT JOIN语法,也可以写成LEFT OUTER JOIN,两者效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:24:54