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

SQL查询:筛选存在count≥10的ID对应的所有数据行

解决方案:选中所有包含count≥10的id的全部行

需求很明确:只要某个id下有任意一行的count值≥10,就把这个id的所有记录都提取出来,而不是只挑count≥10的单行。下面提供几种可行的实现方式:

方法1:子查询筛选目标id

先找出所有符合条件的id(即存在count≥10的id),再关联原表取出对应所有行:

SELECT t.*
FROM your_table t
WHERE t.id IN (
    SELECT DISTINCT id
    FROM your_table
    WHERE count >= 10
);

这里子查询用DISTINCT去重是为了避免重复id,不过即使不用,IN子句也会自动去重,加了效率会更高一点。

方法2:窗口函数标记分组最大值

用窗口函数给每个id分组计算最大count,再筛选出分组内最大值≥10的行:

SELECT id, year_month, count
FROM (
    SELECT 
        *,
        MAX(count) OVER (PARTITION BY id) AS max_count
    FROM your_table
) t
WHERE t.max_count >= 10;

内层查询给每条记录都加上了对应id分组的最大count值,外层只要筛选这个最大值≥10的行,就能得到该id的所有记录。

方法3:EXISTS子查询逐行校验

对每一行记录,检查同一个id下是否存在count≥10的记录,存在就保留当前行:

SELECT t.*
FROM your_table t
WHERE EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.id = t.id
      AND t2.count >= 10
);

这种方式逻辑直观,数据库优化器一般也会对EXISTS做很好的优化,性能表现不错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:25:25