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

如何编写SQL根据子表Table3的type值返回父表table1对应registration_id

需求实现方案

你可以通过分组聚合统计子表Table3的type值分布,配合CASE语句实现规则匹配,改写后的SQL如下:

SELECT 
  t1.registration_id,
  CASE
    WHEN MAX(CASE WHEN t3.type = 1 THEN 1 ELSE 0 END) = 1 
     AND MAX(CASE WHEN t3.type = 3 THEN 1 ELSE 0 END) = 1 
    THEN 123
    WHEN MAX(CASE WHEN t3.type = 1 THEN 1 ELSE 0 END) = 1 
     AND MAX(CASE WHEN t3.type = 3 THEN 1 ELSE 0 END) = 0 
    THEN 321
    -- 其他场景可自行补充返回逻辑,也可调整为返回NULL
    ELSE t1.registration_id
  END AS target_registration_id
FROM table1 t1 
LEFT JOIN table2 t2 ON t2.registration_id = t1.registration_id 
LEFT JOIN table3 t3 ON t3.x_person_id = t2.x_person_id
GROUP BY t1.registration_id;

逻辑说明

  • 按t1.registration_id分组,确保每一个父表的登记ID对应一组关联的子表数据
  • 用聚合函数MAX配合内层CASE判断当前分组下是否存在对应type值的记录,返回1代表存在,0代表不存在
  • 外层CASE按照规则匹配返回指定的registration_id值

表结构参考:
表结构示意图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:45:04