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

SQL两表关联问题:根据cat字段匹配对应列数值

解决两表关联中根据字段匹配对应列的问题

你需要用条件判断函数来实现动态匹配列的需求,核心是通过CASE语句根据表2的cat值,自动选取表1中对应的列作为price。以下是主流数据库通用的实现代码:

MySQL 示例代码

SELECT
    t2.name,
    t2.name_id,
    t2.cat,
    CASE t2.cat
        WHEN '1' THEN t1.`1`
        WHEN '2' THEN t1.`2`
        WHEN '3' THEN t1.`3`
        ELSE NULL -- 可改为0或其他默认值,处理cat不在1/2/3的情况
    END AS price
FROM
    表2 t2
INNER JOIN 表1 t1 ON t2.name_id = t1.name_id;

SQL Server 示例代码

(SQL Server对数字列名的引用规则不同,用方括号替代反引号)

SELECT
    t2.name,
    t2.name_id,
    t2.cat,
    CASE t2.cat
        WHEN '1' THEN t1.[1]
        WHEN '2' THEN t1.[2]
        WHEN '3' THEN t1.[3]
        ELSE NULL
    END AS price
FROM
    表2 t2
INNER JOIN 表1 t1 ON t2.name_id = t1.name_id;

关键说明

  • 先通过INNER JOIN关联两表的name_id,保证基础数据匹配
  • CASE语句会逐个匹配t2.cat的值:如果cat是'1'就取表1的1列,cat是'2'就取2列,以此类推
  • 如果后续cat的可能值增加,只需在CASE里继续添加WHEN 新值 THEN t1.新列的分支即可
  • 数字列名需要用反引号(MySQL)或方括号(SQL Server)包裹,避免语法报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:57:03