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

如何用SQL筛选username分组下id_group全为NULL的行

解决方法:筛选全组id_group均为NULL的行

嘿,这需求很明确,要找出那些整个username分组里所有id_group值都是NULL的记录对吧?我给你两种实用的SQL写法,你可以根据自己的场景选:

方法一:子查询+分组筛选

这种方法逻辑直观,先找出符合条件的username分组,再关联原表取数据:

SELECT t.username, t.id_group
FROM your_table t
WHERE t.username IN (
    SELECT username
    FROM your_table
    GROUP BY username
    HAVING MAX(id_group) IS NULL
);

逻辑说明:

  • 子查询里通过GROUP BY username对每个用户分组,HAVING MAX(id_group) IS NULL是关键:因为MAX函数会自动忽略NULL值,只有当分组里所有id_group都是NULL时,MAX的结果才会是NULL,这样就筛选出了我们要的username。
  • 外层查询再取出这些username对应的所有行。

方法二:窗口函数(更高效)

如果你的表数据量比较大,窗口函数的写法通常性能更好,不需要多次扫描表:

SELECT username, id_group
FROM (
    SELECT 
        username, 
        id_group,
        MAX(id_group) OVER (PARTITION BY username) AS max_group_id
    FROM your_table
) sub_query
WHERE max_group_id IS NULL;

逻辑说明:

  • 内层查询用MAX(id_group) OVER (PARTITION BY username)给每一行计算出所属username分组的最大id_group值。
  • 外层直接过滤掉那些max_group_id不为NULL的行,剩下的就是全组id_group都是NULL的记录。

注意:记得把代码里的your_table替换成你实际使用的表名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:24:24