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

SQL如何两次关联同一张键表匹配不同字段获取对应编码值

多次关联同一映射表的正确SQL实现

错误原因

你出现匹配混乱的核心问题是两次关联Table_keys码表时没有为表设置不同的别名,导致数据库无法区分两次关联的匹配逻辑,触发了字段匹配冲突。

正确实现逻辑

要实现两次独立匹配,只需给两次关联的Table_keys设置不同的别名,分别绑定不同的匹配条件即可:

  1. 先关联Table1和Table2,关联条件为id和name一致(可根据实际业务需求选择INNER JOIN或LEFT JOIN)
  2. 第一次关联Table_keys取别名tk1,用Table1的model字段匹配tk1的model字段,得到model number_1
  3. 第二次关联Table_keys取别名tk2,用Table2的model2字段匹配tk2的model字段,得到model number_2

示例SQL代码

SELECT 
    t1.id,
    t1.name,
    t1.model,
    t2.model2,
    tk1.`model number` AS `model number_1`,
    tk2.`model number` AS `model number_2`
FROM Table1 t1
-- 关联Table2,可根据实际场景替换为LEFT JOIN
INNER JOIN Table2 t2 
    ON t1.id = t2.id 
    AND t1.name = t2.name
-- 第一次关联码表匹配Table1的model
LEFT JOIN Table_keys tk1 
    ON t1.model = tk1.model
-- 第二次关联码表匹配Table2的model2
LEFT JOIN Table_keys tk2 
    ON t2.model2 = tk2.model

注:若使用Oracle等不支持反引号的数据库,可将反引号包裹的带空格字段名替换为双引号。

预期输出结果

按照你给出的测试数据,最终Table_result的内容如下:

  • id=1,name=1,model=st,model2=st,model number_1=234,model number_2=234
  • id=2,name=2,model=ar,model2=th,model number_1=127,model number_2=338

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 00:48:01