我有一个MySQL数据库,它包含一个表,其中包含varbinary类型的列中的一些数据(20)
不要问我为什么 - 它只是,我需要处理它。
此数据表示学生作为课程的一部分完成的模块数。还有另一个名为标准的列,表示必须完成的模块数,以便将课程标记为完成。当我计算已完成课程的数量时,我想计算
的行数completed = criteria AND completed != 0 ( ...oh and where the student is enrolled)
(因为在某些情况下标准为0所以我想跳过任何一个学生完成了0个模块中的0个课程)。
另外由于某种原因,varbinary列中0的值为30(如果有人可以为此提供解释那么很好)所以如果有3个模块需要完成,则条件列中的值将为33
所以我的SQL查询看起来像这样 -
count(CASE WHEN (completed <> 30 AND (completed = criterias) AND enrolled = 'Yes') THEN 1 END) AS Total_Complete
然而,这个计数似乎包括学生完成了0个0课程的课程,所以看来我已经完成了&lt;&gt; 30不工作。
答案 0 :(得分:0)
当我写这篇文章的时候,我回答了我自己的问题,但我认为id会把它留在这里,因为它帮助了其他任何人。
解决方案是忽略这样一个事实:无论出于何种原因,0由30表示并将我的sql更改为 -
count(CASE WHEN (completed <> 0 AND (completed = criterias) AND enrolled = 'Yes') THEN 1 END) AS Total_Complete
这有效