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

SQL如何排除表中指定ID所有月份Appointment均为Yes的所有行

SQL查询实现方案

需求说明

排除表中所有Appointment字段全为Yes的ID对应的全部行,仅保留至少存在1条Appointment不为Yes的ID的所有数据。

实现代码

方案1:窗口函数实现(兼容MySQL8.0+/PostgreSQL/SQL Server等主流新版本数据库)

逻辑更简洁,执行效率高:

SELECT ID, DateYM, Status, Appointment
FROM (
    SELECT 
        *,
        -- 按ID分组统计该ID下非Yes的记录数
        COUNT(CASE WHEN Appointment <> 'Yes' THEN 1 END) OVER (PARTITION BY ID) AS not_yes_count
    FROM 你的表名
) temp
WHERE not_yes_count > 0;

方案2:子查询实现(兼容所有SQL版本,包括低版本MySQL)

如果数据库不支持窗口函数可以用该方案:

SELECT * 
FROM 你的表名
WHERE ID NOT IN (
    SELECT ID
    FROM 你的表名
    GROUP BY ID
    -- 筛选出所有Appointment全为Yes的ID
    HAVING SUM(CASE WHEN Appointment <> 'Yes' THEN 1 ELSE 0 END) = 0
);

说明

你之前通过总记录数和Yes记录数对比的方案逻辑上是可行的,但如果存在Appointment为NULL的场景会出现判断误差,上述方案直接判断是否存在非Yes的记录,兼容性更强,准确率100%,完全匹配你给出的预期输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:42:00