【问题标题】:what is the difference between ,(comma) and and in group by?,(comma) 和 and in group by 有什么区别?
【发布时间】:2019-02-02 02:20:19
【问题描述】:

我想找出每个学科学期的学生人数。 以下是给出正确答案的查询

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 和 和 有什么区别?

【问题讨论】:

    标签: mysql sql group-by


    【解决方案1】:

    GROUP BY subject, semester 表示在结果集中为subjectsemester 的每个唯一组合创建一行,并带有该组合的行数。

    subject and semester是一个逻辑表达式,如果subjectsemester都为真则为TRUE,否则返回FALSE。如果列包含字符串,非空值为真,空字符串为假;如果该列包含一个数字,非零值为真,零为假。

    因此,您将在结果中最多获得两行。一组代表两列都为真的所有行,另一列代表所有其他行。

    GROUP BY col1 AND col2 几乎没有用处。

    【讨论】:

      【解决方案2】:

      逗号分隔表达式。 group by subject, semester 正在为每对不同的值创建一个单独的组。我想这就是你想要的。

      使用AND 的示例只有一个布尔表达式,只有两个不同的组,一组表示true,一组表示falseAND 是一个布尔运算符。它计算两个操作数,然后给出它们之间的布尔连接。

      所以它只将subjectsemester 评估为布尔值,然后如果两者都为真,则整个布尔表达式为真。这就是布尔值AND 的工作方式。

      MySQL 将布尔值视为与整数值相同的东西,1 表示真,0 表示假。所以它将评估subjectsemester 作为数字。这可能会产生意想不到的结果。

      如果要按两列分组,应使用逗号。

      【讨论】:

        猜你喜欢
        • 2010-12-15
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 2013-02-27
        相关资源
        最近更新 更多