我想找出每学期每门课的学生人数。
下面的问题给出了正确的答案

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是布尔运算符。它对两个操作数求值,然后给出它们之间的布尔连接。
所以它只将subjectsemester计算为布尔值,如果两者都为真,则整个布尔表达式为真。这就是布尔AND的工作方式。
mysql将布尔值视为整数值,1表示真,0表示假。因此它将把subjectsemester作为数字来计算。这可能会产生意想不到的结果。
如果要按两列分组,应使用逗号。

10-05 20:32
查看更多