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

技术求助:仅用WHERE子句筛选无女性用户的国家(不使用子查询)

解决方案:不用指定NOT IN子查询筛选无女性用户的国家

当然有可行的方案!这里提供几种避开你提到的NOT IN子查询形式的方法,其中多数可以结合WHERE子句实现需求:

方法1:使用NOT EXISTS子查询

NOT EXISTS和NOT IN逻辑接近,但处理空值时更可靠,且不属于你排除的那种NOT IN子查询写法:

SELECT DISTINCT country
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.country = t1.country
      AND t2.gender = 'Female'
);

逻辑说明:遍历每个国家的记录,只要不存在同国家的女性用户记录,就保留该国家,最后用DISTINCT确保每个国家只返回一次。

方法2:使用LEFT JOIN + IS NULL

通过左连接匹配女性用户记录,再用WHERE子句过滤出无匹配的国家:

SELECT DISTINCT t1.country
FROM your_table t1
LEFT JOIN your_table t2
  ON t1.country = t2.country
  AND t2.gender = 'Female'
WHERE t2.id IS NULL;

逻辑说明:将原表与自身按国家关联,仅匹配女性用户的记录。左连接后如果t2.id为NULL,说明该国家没有女性用户,最后去重得到结果。

方法3:使用GROUP BY + HAVING(补充方案)

如果允许使用聚合筛选(虽不是纯WHERE,但也是常见的实现方式),可以通过统计女性用户数量来筛选:

SELECT country
FROM your_table
GROUP BY country
HAVING COUNT(CASE WHEN gender = 'Female' THEN 1 END) = 0;

逻辑说明:按国家分组后,统计每个国家的女性用户数量,当数量为0时,说明该国家没有女性用户,直接返回对应国家。

测试结果

针对你提供的表格数据,以上三种方法都会返回:

AUS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:48:35