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

SQL中如何将值表与列名表合并?含5张业务表场景

没问题,我来帮你搞定这两个值表和列名表的合并需求。咱们分两个场景来写SQL,分别处理技能组和技能的关联:

1. 合并技能组值表(T4: skillgroup person)与技能组名列(T2: skillgroup names)

T4里的skillgroupID对应T2的id字段,用INNER JOIN就能把这两张表关联起来,拿到带技能组名称的完整数据:

SELECT 
    t4.name AS person_name,
    t2.name AS skillgroup_name,
    t4.value AS skillgroup_score
FROM 
    `skillgroup person` t4
INNER JOIN 
    `skillgroup names` t2 ON t4.skillgroupID = t2.id;

这个查询会返回每个人对应的技能组名称和分值,比如Alice的sgn1(40分)、sgn2(38分)这类数据。如果想保留T4里所有记录(哪怕T2里没有对应ID的情况),可以把INNER JOIN换成LEFT JOIN。

2. 合并技能值表(T5: skill person)与技能名列(T3: skill names)

和上面的逻辑一样,用skillID关联T3的id字段即可:

SELECT 
    t5.name AS person_name,
    t3.name AS skill_name,
    t5.value AS skill_score
FROM 
    `skill person` t5
INNER JOIN 
    `skill names` t3 ON t5.skillID = t3.id;

同样,要是需要保留T5里的所有记录(不管T3有没有对应技能名称),改用LEFT JOIN就行。

可选:关联人员详情表(T1)获取更多信息

如果还想把人员的年龄、性别也加进来,可以再关联T1:

比如技能组的完整查询:

SELECT 
    t1.name AS person_name,
    t1.age,
    t1.gender,
    t2.name AS skillgroup_name,
    t4.value AS skillgroup_score
FROM 
    `skillgroup person` t4
INNER JOIN 
    `skillgroup names` t2 ON t4.skillgroupID = t2.id
INNER JOIN 
    people t1 ON t4.name = t1.name;

技能的完整查询同理,把T4和T2换成T5和T3就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:12:46