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

SQL新手求助:基于多ID列关联查询生成目标结果表

解决IND表关联REF表生成RES表的SQL问题

嘿,刚接触SQL的话,这种多字段关联确实容易卡壳,我来给你捋清楚怎么写这个SELECT语句~

首先咱们先明确需求:把IND表中的ID1、ID2、ID3分别对应到REF表的ID,替换成对应的V值,空的ID位置就保留为空,最终得到RES表的结果。

核心思路:多次LEFT JOIN

因为IND表的每个ID字段都需要单独关联REF表,而且要保留原IND表的所有行(哪怕某些ID字段是空的),所以我们需要对REF表做三次LEFT JOIN,分别对应ID1、ID2、ID3三个字段。

完整SQL语句

SELECT 
    r1.V AS ID1,
    r2.V AS ID2,
    r3.V AS ID3
FROM IND
LEFT JOIN REF r1 ON IND.ID1 = r1.ID
LEFT JOIN REF r2 ON IND.ID2 = r2.ID
LEFT JOIN REF r3 ON IND.ID3 = r3.ID;

语句细节解释

  • LEFT JOIN REF r1 ON IND.ID1 = r1.ID:把IND表的ID1和REF表的ID关联,取对应的V值作为新的ID1列;如果IND的ID1是空的,这里就返回NULL(对应结果里的空值)。
  • 同理,r2和r3分别对应ID2和ID3的关联逻辑,用别名区分三次关联的REF表,避免字段冲突。
  • LEFT JOIN的优势就是会保留原表(IND)的所有行,哪怕关联不上REF表的ID,也不会丢失数据。

执行结果验证

运行上面的语句后,得到的结果和你期望的RES表完全一致:

ID1ID2ID3
1020
3040
50
6070

以后遇到多个字段需要关联同一张表的情况,都可以用这种多次LEFT JOIN的思路哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:09:15