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

MySQL跨表校验查询:按关联字段筛选符合条件的货币数据

解决方案

固定场景实现

如果y_table的列名是固定的{currency}_{type}格式,且组合不多,直接用CASE语句匹配对应列即可:

SELECT x.currency
FROM x_table x
CROSS JOIN y_table y
WHERE x.continent = 'Asia'
AND CASE x.type
    WHEN 'Dual' THEN y.Rupee_Dual
    WHEN 'Single' THEN y.Yen_Single
    -- 有新的currency/type组合时,添加对应的WHEN分支
    END = 1;

执行后只会返回Rupee,Yen因对应列值为0被排除。

通用场景实现

如果后续会频繁新增currency或type,用动态SQL可以自动适配:

-- 设置目标大洲
SET @target_continent = 'Asia';

-- 构造动态查询语句
SET @sql = (
    SELECT GROUP_CONCAT(
        'SELECT currency FROM x_table WHERE continent = ''', @target_continent, ''' AND currency = ''', currency, ''' AND EXISTS (SELECT 1 FROM y_table WHERE `', CONCAT(currency, '_', type), '` = 1)'
        SEPARATOR ' UNION '
    )
    FROM x_table
    WHERE continent = @target_continent
);

-- 执行动态SQL
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

这个方案会自动根据x_table中的记录拼接查询条件,无需手动修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 18:15:42