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

SQL如何关联与父表无直接关联关系的表获取目标数据

问题原因

你原有SQL的核心问题有两点:

  • 未建立table3与table2的关联逻辑:table3的source、target字段存储的都是table2的主键id,你需要保证这两个值都属于关联到目标table1记录的table2 id集合
  • 错误使用LEFT JOIN:LEFT JOIN会保留左表(此处是table3)的所有记录,无论关联条件是否命中,自然会返回全量table3数据

正确SQL写法

写法1:子查询实现(可读性更高)

SELECT
    tb3.id,
    tb3.source,
    tb3.target
FROM table_3 tb3
WHERE
    tb3.source IN (SELECT id FROM table_2 WHERE fk_table_1 = 1000)
    AND tb3.target IN (SELECT id FROM table_2 WHERE fk_table_1 = 1000);

写法2:多表关联实现

SELECT DISTINCT
    tb3.id,
    tb3.source,
    tb3.target
FROM table_3 tb3
INNER JOIN table_2 t2_source ON t2_source.id = tb3.source
INNER JOIN table_2 t2_target ON t2_target.id = tb3.target
WHERE
    t2_source.fk_table_1 = 1000
    AND t2_target.fk_table_1 = 1000;

如果需要适配所有table1的id、而非固定值1000,可扩展WHERE条件关联table1表即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:06:04