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

通过子查询/CTE识别区域组合,为数据表添加pure/mix类型列

实现方案:新增type列(基于子查询/CTE)

方法一:子查询实现

先通过子查询判断每个id下是否存在area不属于A、C、D的记录,再将判断结果关联回原表生成type列:

SELECT 
    t.*,
    CASE 
        WHEN exists_flag = 1 THEN 'mix'
        ELSE 'pure'
    END AS type
FROM 
    your_table t
JOIN 
    (SELECT 
        id,
        MAX(CASE WHEN area NOT IN ('A', 'C', 'D') THEN 1 ELSE 0 END) AS exists_flag
     FROM 
        your_table
     GROUP BY 
        id) id_flag ON t.id = id_flag.id;

逻辑说明

  • 子查询里用MAX(CASE...)统计每个id的标记:只要有一行area不在A/C/D范围内,exists_flag就会被设为1,否则为0。
  • 关联原表后,根据exists_flag的值输出对应的type:1对应'mix',0对应'pure'。

方法二:CTE(公共表表达式)实现

用CTE先计算每个id的类型标记,再和原表关联,写法更直观:

WITH id_type AS (
    SELECT 
        id,
        CASE 
            WHEN COUNT(CASE WHEN area NOT IN ('A', 'C', 'D') THEN 1 END) > 0 THEN 'mix'
            ELSE 'pure'
        END AS type
    FROM 
        your_table
    GROUP BY 
        id
)
SELECT 
    t.*,
    it.type
FROM 
    your_table t
JOIN 
    id_type it ON t.id = it.id;

逻辑说明

  • CTEid_type中,用COUNT(CASE...)统计每个id下不符合条件的area行数:如果行数大于0,说明存在非A/C/D的记录,标记为'mix',否则为'pure'。
  • 将原表与CTE关联,直接把对应type字段带入结果集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:05:14