我想找出每学期每门课的学生人数。
下面的问题给出了正确的答案
select semester,subject,count(stdId)
from tblSubjectMaster
group by subject, semester
但我也尝试了其他的查询,它给出了不同的结果。查询是
select semester,subject,count(stdId)
from tblSubjectMaster
group by subject and semester
和在组中的区别是什么?
最佳答案
逗号分隔表达式。group by subject, semester
正在为每个不同的值对创建单独的组。我想这就是你想要的。
使用AND
的示例只是一个布尔表达式,只有两个不同的组,一个用于true,一个用于false。AND
是布尔运算符。它对两个操作数求值,然后给出它们之间的布尔连接。
所以它只将subject
和semester
计算为布尔值,如果两者都为真,则整个布尔表达式为真。这就是布尔AND
的工作方式。
mysql将布尔值视为整数值,1表示真,0表示假。因此它将把subject
和semester
作为数字来计算。这可能会产生意想不到的结果。
如果要按两列分组,应使用逗号。