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

如何将单表多列关联至另一表单列并生成teamid列

解决方案:关联多列到单列生成teamid

这个需求很常见,核心是先从TeamInOut表的In和Out列里提取出有效的团队名称,再关联teams表拿到对应的id。

思路分析

观察你的表数据可以发现,每一行里In和Out总有一列是有效的团队名(另一列是-)。所以我们可以先把-转换成NULL,再用COALESCE()函数取第一个非NULL的团队名,最后用这个名称关联teams表即可。

具体SQL代码

SELECT 
    tio.In,
    tio.Out,
    t.id AS teamid
FROM TeamInOut tio
JOIN teams t 
    ON t.team_name = COALESCE(NULLIF(tio.In, '-'), NULLIF(tio.Out, '-'));

代码解释

  1. NULLIF(tio.In, '-'):把In列中值为-的记录转换成NULL,其他值保持不变;同理处理Out列。
  2. COALESCE(...):从处理后的In和Out值里,返回第一个非NULL的结果——也就是当前行的有效团队名称。
  3. 关联teams表:用提取到的团队名称匹配teams表的team_name,拿到对应的id作为teamid。

验证结果

执行这段SQL后,会完全输出你期望的结果:

InOutteamid
-teamA1
teamB-2
-teamC3
teamD-4
-teamD4

如果你的实际表中,空值不是-而是空字符串或NULL,只需要调整NULLIF的参数即可(比如空字符串用NULLIF(tio.In, ''),如果是NULL可以直接去掉NULLIF,只用COALESCE(tio.In, tio.Out))。

内容的提问来源于stack exchange,提问作者Andiastika Intan Pratiwi Hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:45:50