美文网首页web开发
【技术研究】Mysql系列——having

【技术研究】Mysql系列——having

作者: 小静默 | 来源:发表于2016-06-15 14:33 被阅读24次

        mysql中having的作用是对分组之后的结果进行筛选。

        在group的基础上,见http://www.jianshu.com/p/38f1992fb0ea?utm_campaign=haruki&utm_content=note&utm_medium=reader_share&utm_source=weixin&from=singlemessage&isappinstalled=1
        进一步需要帅选,比如,学校有多门课程,想查看学分大于3的课程中,被大于等于10个学生选中的课程是哪些,以及对应的人数:
    SELECT COUNT(*) num_tmp, course_id FROM `course` WHERE course_score>"3" GROUP BY course_id having num_tmp>=10 ORDER BY course_id;

        即:先从course表中查询学分大于3的所有课程,然后按照课程分组,并计算每门课程选择的人数,最后将人数大于等于10的课程和对应的人数返回。

       有人可能疑惑?where和having的区别?

       where是在聚合前使用,having在聚合后筛选~ 另外:having后面跟的条件判断的字段必须是聚合函数返回的结果,否则sql会报错,例如:

    SELECT COUNT(*) num_tmp, course_id FROM `course` GROUP BY course_id having course_score>"3" ORDER BY course_id;

    将会报错:

    图1-having后不是聚合函数返回的结果

    相关文章

      网友评论

        本文标题:【技术研究】Mysql系列——having

        本文链接:https://www.haomeiwen.com/subject/diqpdttx.html