使用MySQL计算指定用户特定测试成绩的总和
问题分析与解决
你的SQL查询返回0是因为存在几个关键错误:
- 条件逻辑错误:用
AND同时要求TestName=First和TestName=Third,但单条记录的TestName不可能同时是两个不同值,根本匹配不到任何数据,SUM结果自然为0。 - 字符串值未加引号:
First和Third是字符串类型的字段值,SQL会将未加引号的它们识别为列名而非字符串,导致条件完全不成立。 - 表名使用关键字:
table是SQL的保留关键字,直接作为表名可能引发语法问题,建议用反引号(如MySQL)或方括号(如SQL Server)包裹。 - 测试名称匹配不精确:你的表中
TestName实际值是1. First、3. Third,之前的查询少了前缀编号,这也是匹配不到数据的原因。
正确的查询写法
方法1:用IN匹配多个测试名称
SELECT SUM(Earned) as Score FROM `table` WHERE TestName IN ('1. First', '3. Third') AND StudentID=3;
方法2:用OR连接多个条件
SELECT SUM(Earned) as Score FROM `table` WHERE (TestName='1. First' OR TestName='3. Third') AND StudentID=3;
内容的提问来源于stack exchange,提问作者Zcast
相关产品推荐
相关产品推荐

