MySQL SUM查询中NOT IN条件附加指定排除规则的实现问询
SQL语句编写方案
完整写法(兼容Status有其他枚举值的场景)
-- 统计符合条件的记录总数 SELECT COUNT(*) AS qualified_count FROM Status WHERE Status NOT IN ('Y', 'U', 'X') AND NOT (Status = 'N' AND Reason IN (2, 5)); -- 若需要对指定数值字段求和,替换SUM内的字段即可,示例为对Reason求和 SELECT SUM(Reason) AS sum_result FROM Status WHERE Status NOT IN ('Y', 'U', 'X') AND NOT (Status = 'N' AND Reason IN (2, 5));
简化写法(仅当Status枚举仅包含Y/U/X/N时使用)
由于Status NOT IN ('Y', 'U', 'X')实际等价于筛选出Status为N的记录,因此可以简化条件为:
SELECT COUNT(*) AS qualified_count FROM Status WHERE Status = 'N' AND Reason NOT IN (2, 5);
结果验证
根据你提供的样例数据,符合条件的记录共2条:
- Status=N,Reason=1
- Status=N,Reason=4
统计总数结果为2,对Reason求和结果为5。
内容的提问来源于stack exchange,提问作者user14079292
相关产品推荐
相关产品推荐

