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

MySQL条件生成新列:基于table_1的col_new查询需求

MySQL 查询生成新列 col_new 的解决方案

这题用MySQL的CASE WHEN条件判断就能轻松实现需求,直接上完整的查询语句,再拆解逻辑:

SELECT 
    col_1,
    CASE
        -- 覆盖规则1和2:col_2或col_3任意一个为NULL时,col_new设为NULL
        WHEN col_2 IS NULL OR col_3 IS NULL THEN NULL
        -- 处理特殊情况:col_2、col_3都非空且col_3是'CCC'时,拼接指定内容
        WHEN col_3 = 'CCC' THEN CONCAT(col_3, 'v', col_4)
        -- 规则3的常规情况:两者都非空且不是特殊值,直接取col_3
        ELSE col_3
    END AS col_new
FROM table_1;

逻辑拆解:

  • 第一个WHEN把规则1和规则2合并处理了,因为不管是col_2为NULL,还是col_2非空但col_3为NULL,最终结果都是NULL,用OR连接两个条件更简洁高效。
  • 第二个WHEN专门处理特殊场景,当col_3等于'CCC'时,调用CONCAT()函数拼接col_3、固定字符v和col_4的内容。
  • 最后的ELSE对应规则3的常规情况:当col_2和col_3都非空,且col_3不是'CCC'时,直接返回col_3的值。

额外提示:

如果col_4可能存在NULL值,拼接后会导致整个结果变为NULL。要是希望这种情况下依然保留CCCv的前缀,可以用COALESCE()函数把NULL转为空字符串,修改后的拼接语句如下:

CONCAT(col_3, 'v', COALESCE(col_4, ''))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:16:49