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

如何用SQL实现指定条件下添加状态行或筛选符合条件的id_1和id_2?

SQL实现方案

一、找出符合条件的id_1与id_2

可以通过分组聚合筛选出同时存在opened和clicked状态、但不存在delivered状态的id组合:

SELECT id_1, id_2
FROM 你的表名
GROUP BY id_1, id_2
HAVING SUM(CASE WHEN status = 'opened' THEN 1 ELSE 0 END) > 0
   AND SUM(CASE WHEN status = 'clicked' THEN 1 ELSE 0 END) > 0
   AND SUM(CASE WHEN status = 'delivered' THEN 1 ELSE 0 END) = 0;

二、新增status='delivered'的行

可以结合上述查询结果,用INSERT...SELECT语句批量插入目标行(注意替换表名和其他字段的默认值):

INSERT INTO 你的表名 (id_1, id_2, status, 其他字段名1, 其他字段名2)
SELECT id_1, id_2, 'delivered', 字段1默认值, 字段2默认值
FROM (
    SELECT id_1, id_2
    FROM 你的表名
    GROUP BY id_1, id_2
    HAVING SUM(CASE WHEN status = 'opened' THEN 1 ELSE 0 END) > 0
       AND SUM(CASE WHEN status = 'clicked' THEN 1 ELSE 0 END) > 0
       AND SUM(CASE WHEN status = 'delivered' THEN 1 ELSE 0 END) = 0
) AS target_groups;

注:如果你的数据库支持窗口函数,也可以用窗口函数替代分组聚合来筛选目标id组合,逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:05:24