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

如何从GROUP BY分组结果中获取address_1列为NULL的行的id值

实现方案

你可以通过以下两种常见方式获取目标id,适配不同的数据库版本需求:

方案1:子查询匹配分组(兼容所有支持标准SQL的数据库)

先通过子查询筛选出符合COUNT(id) > 1要求的address_2 + address_3分组,再在外层筛选这些分组中address_1为NULL的行即可:

SELECT id 
FROM `table`
WHERE 
  address_1 IS NULL
  AND (address_2, address_3) IN (
    SELECT address_2, address_3
    FROM `table`
    GROUP BY address_2, address_3
    HAVING COUNT(id) > 1
  );

注意:如果你的数据表中address_1空值是空字符串而非NULL,把address_1 IS NULL替换为address_1 = ''即可。

方案2:窗口函数(适配MySQL8.0+、PostgreSQL、SQL Server等支持窗口函数的数据库)

仅需单次扫描数据表即可得到结果,数据量较大时执行效率更高:

WITH group_stat AS (
  SELECT 
    id,
    address_1,
    COUNT(*) OVER (PARTITION BY address_2, address_3) AS group_size
  FROM `table`
)
SELECT id 
FROM group_stat 
WHERE address_1 IS NULL AND group_size > 1;

两种方案执行后返回的id就是你示例中2、4这类符合要求的记录id,可直接用于后续的更新/删除操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:27:04