SQL使用WHERE子句求和返回0的问题排查
问题原因与修正方案
错误点分析
- 表名语法错误:
FROM T*是无效的表名写法,数据库无法识别该表,导致读取不到任何数据,最终SUM结果返回0。 - WHERE子句逻辑错误:
Person = 'A' OR 'D' OR 'E'不符合SQL语法逻辑。SQL中OR连接的必须是完整的布尔条件,单独的'D'或'E'会被数据库当作布尔值TRUE处理,这会导致所有行都被匹配(OR只要一个条件为真就成立),即便表名正确,也会得到所有Score的总和而非目标值。
正确SQL写法
方法1:用OR连接完整条件
SELECT SUM(Score) FROM T WHERE Person = 'A' OR Person = 'D' OR Person = 'E';
方法2:用IN子句(更简洁推荐)
SELECT SUM(Score) FROM T WHERE Person IN ('A', 'D', 'E');
两种写法都会返回正确结果190,注意确保表名T是你实际使用的表名称,若表名不同需替换为正确名称。
内容的提问来源于stack exchange,提问作者megarm
相关产品推荐
相关产品推荐

