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

如何筛选仅包含2017年记录的id数据?

问题描述

我有如下数据表:

idyearval
1201721
2201722
1201834
2201855
1201923
2201943
3201744

需要筛选出仅存在2017年记录的id,排除拥有其他年度记录的id,最终仅显示id=3的数据。

解决方案

可以通过以下几种SQL方式实现需求:

方法一:分组结合HAVING子句

通过分组统计每个id的年份范围,确保其最小和最大年份均为2017:

SELECT id
FROM your_table_name
GROUP BY id
HAVING MIN(year) = 2017 AND MAX(year) = 2017;

方法二:子查询排除法

先找出所有存在非2017年记录的id,再从原表中排除这些id:

SELECT DISTINCT id
FROM your_table_name
WHERE id NOT IN (
    SELECT DISTINCT id
    FROM your_table_name
    WHERE year != 2017
);

方法三:条件计数匹配

统计每个id的总记录数,与该id在2017年的记录数对比,两者相等则说明仅存在2017年的记录:

SELECT id
FROM your_table_name
GROUP BY id
HAVING COUNT(*) = COUNT(CASE WHEN year = 2017 THEN 1 END);

以上三种方法均可得到目标结果:仅显示id=3的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:22:44