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

SQL Server:如何筛选rank列仅包含值's'的ID?

问题:查找仅包含特定rank值的ID

现有表结构与数据

SQL Server中的MyTable表包含ID和rank两列,数据示例如下:

IDrank
1a
1b
1s
1w
2s
2s
3w
....

需求

查找所有rank列仅包含值's'、无其他取值的ID,预期结果如下:

IDrank
2s

解决方案

方法一:GROUP BY + HAVING

通过分组ID,筛选出该ID下所有rank值均为s的记录:

SELECT ID, 's' AS rank
FROM MyTable
GROUP BY ID
HAVING MIN(rank) = 's' AND MAX(rank) = 's';

如果需要更严谨地排除存在其他rank值的情况,可以用以下写法:

SELECT ID, 's' AS rank
FROM MyTable
GROUP BY ID
HAVING COUNT(CASE WHEN rank <> 's' THEN 1 END) = 0;

方法二:NOT EXISTS

通过子查询排除存在非srank值的ID:

SELECT DISTINCT ID, rank
FROM MyTable t1
WHERE rank = 's'
AND NOT EXISTS (
    SELECT 1
    FROM MyTable t2
    WHERE t2.ID = t1.ID
    AND t2.rank <> 's'
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:45:07