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

如何从数据表中提取所有邮箱地址全部缺失的管理者记录

筛选所有邮箱全缺失的管理者记录

嗨,这个需求处理起来很清晰,咱们可以通过两种常用思路来实现,适配大多数数据库环境:

方法一:聚合子查询(通用SQL写法)

这是最兼容的写法,几乎所有数据库都支持:

SELECT t.*
FROM your_table t
WHERE t.Manager_Name IN (
    SELECT Manager_Name
    FROM your_table
    GROUP BY Manager_Name
    -- 统计非Null邮箱数量,等于0说明全是缺失
    HAVING COUNT(Email_Address) = 0
)

解释

  • 内层子查询通过GROUP BY Manager_Name按管理者分组,COUNT(Email_Address)只会统计非Null的邮箱条目,结果为0就代表该管理者的所有邮箱都缺失。
  • 外层查询直接匹配这些管理者,把他们的所有记录都提取出来。

如果你的数据表中存的是字符串'Null'而非SQL原生的NULL值,只需要调整内层的判断逻辑:

SELECT t.*
FROM your_table t
WHERE t.Manager_Name IN (
    SELECT Manager_Name
    FROM your_table
    GROUP BY Manager_Name
    HAVING COUNT(CASE WHEN Email_Address != 'Null' THEN 1 END) = 0
)

方法二:窗口函数(适合支持窗口函数的数据库)

如果你的数据库支持窗口函数(比如MySQL 8+、PostgreSQL、SQL Server等),这种写法更高效,不需要额外关联:

SELECT Manager_Name, Email_Address
FROM (
    SELECT *,
           -- 按管理者分组统计非Null邮箱数量
           COUNT(Email_Address) OVER (PARTITION BY Manager_Name) AS valid_email_count
    FROM your_table
) sub_query
WHERE valid_email_count = 0

解释

窗口函数COUNT(Email_Address) OVER (PARTITION BY Manager_Name)会给每条记录打上一个标记,显示对应管理者的有效邮箱总数。我们只需要筛选出总数为0的记录即可。

同样,如果是字符串'Null'的情况,调整窗口函数的统计逻辑:

SELECT Manager_Name, Email_Address
FROM (
    SELECT *,
           COUNT(CASE WHEN Email_Address != 'Null' THEN 1 END) OVER (PARTITION BY Manager_Name) AS valid_email_count
    FROM your_table
) sub_query
WHERE valid_email_count = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:47:32