如何用SQL筛选无Incomplete('I')状态的ID
筛选无'I'状态的唯一ID解决方案
嘿,这里有几种靠谱的SQL写法,能帮你精准找出所有关联记录里完全没有'Incomplete'(即状态为'I')的ID,也就是你要的ID#3:
方法1:用NOT EXISTS子查询排除不合格ID
SELECT DISTINCT id FROM your_table t1 WHERE NOT EXISTS ( SELECT 1 FROM your_table t2 WHERE t2.id = t1.id AND t2.status = 'I' );
这个写法的逻辑很直接:找那些**不存在任何一条对应ID下状态为'I'**的记录,直接把有不合格状态的ID全部排除掉。
方法2:用GROUP BY + HAVING统计筛选
SELECT id FROM your_table GROUP BY id HAVING SUM(CASE WHEN status = 'I' THEN 1 ELSE 0 END) = 0;
或者更简洁的版本(大部分主流数据库都支持):
SELECT id FROM your_table GROUP BY id HAVING COUNT(CASE WHEN status = 'I' THEN 1 END) = 0;
这个思路是先按ID分组,然后统计每组里状态为'I'的记录数量,只保留统计数为0的组——也就是完全没有'I'状态的ID。
两种方法都能得到你需要的结果,选哪个看你习惯和数据库环境就行~
内容的提问来源于stack exchange,提问作者Link
相关产品推荐
相关产品推荐

