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

如何筛选所有FLAG均为1的ACCOUNT记录?求SQL查询语句

解决方案:筛选所有FLAG均为1的ACCOUNT记录

方法1:使用NOT EXISTS子查询

通过排除存在非1 FLAG的ACCOUNT,直接筛选符合条件的记录:

SELECT t1.*
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.ACCOUNT = t1.ACCOUNT
      AND t2.FLAG != 1
);

逻辑:对每条记录检查同账号下是否存在FLAG不等于1的条目,无则保留该记录。

方法2:GROUP BY + HAVING 结合 JOIN

先通过分组筛选出所有FLAG都是1的ACCOUNT,再关联原表获取完整记录:

SELECT t.*
FROM your_table t
JOIN (
    SELECT ACCOUNT
    FROM your_table
    GROUP BY ACCOUNT
    HAVING MAX(FLAG) = 1 AND MIN(FLAG) = 1
) valid_accounts ON t.ACCOUNT = valid_accounts.ACCOUNT;

逻辑:分组后,只有当账号下所有FLAG的最大值和最小值均为1时,说明该账号FLAG全为1,再关联原表取出这些账号的所有记录。

方法3:窗口函数(适用于支持窗口函数的数据库)

利用窗口函数计算每个账号的FLAG极值,再筛选符合条件的记录:

SELECT ACCOUNT, FLAG
FROM (
    SELECT *,
           MAX(FLAG) OVER (PARTITION BY ACCOUNT) AS max_flag,
           MIN(FLAG) OVER (PARTITION BY ACCOUNT) AS min_flag
    FROM your_table
) sub_query
WHERE max_flag = 1 AND min_flag = 1;

逻辑:给每条记录标记其所属账号的最大和最小FLAG,两者均为1时,说明该账号所有FLAG都是1,保留这些记录。

注意:请将上述SQL中的your_table替换为你的实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:02:02