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

多表SQL查询需求:保留GL表所有交易,允许WF表字段为NULL

解决GL表全量交易记录的多表关联查询问题

你遇到的问题本质是内连接和左连接的逻辑差异:用WHERE做表关联属于内连接逻辑,只会返回两张表都有匹配的记录;而你需要的左连接(LEFT JOIN)会保留左表(GL表)的所有行,右表(WF表)无对应匹配时返回NULL。

正确的SQL写法示例

假设两张表的关联字段是transaction_id,正确的左连接查询如下:

SELECT 
    gl.*, 
    wf.*  -- WF无匹配时,这些字段会显示为NULL
FROM 
    gl_table gl
LEFT JOIN 
    wf_table wf 
    ON gl.transaction_id = wf.transaction_id;

关键注意点

如果需要对WF表的字段加过滤条件,必须把条件写在LEFT JOIN的ON子句里,而不是WHERE子句。比如要筛选WF表中状态为已审批的记录,但仍保留所有GL交易:

SELECT 
    gl.*, 
    wf.*
FROM 
    gl_table gl
LEFT JOIN 
    wf_table wf 
    ON gl.transaction_id = wf.transaction_id
    AND wf.status = 'approved'; -- 仅过滤WF的匹配行,不影响GL全量记录

要是把wf.status = 'approved'放到WHERE里,会直接过滤掉WF字段为NULL的GL记录,回到和内连接一样的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:39