• 朱晓峰
    置顶
    2021-04-21
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了条件语句WHERE和HAVING。下面是思考题的参考答案: HAVING后面的条件,必须是包含分组中计算函数的条件。这种说法是有道理的,主要是考虑到查询的效率。因为如果不是分组中的计算函数的条件,那么这个条件应该可以用WHERE而不是用HAVING,查询的效率就不高了。
    
    14
  • 海林Lin
    2021-04-05
    思考题答案: SELECT goodsname, count(goodsname) FROM demo.goodsmaster GROUP BY goodsname HAVING count(goodsname) > 1;

    作者回复: 请参考公布的思考题答案

    
    5
  • 右耳朵猫咪
    2021-03-25
    像sum()、avg()这样的函数都是统计非空的记录;文章中对group by后的字段做了函数处理,会降低性能,实际开发中不会这么搞。

    作者回复: 还是要根据实际场景分析

    共 4 条评论
    5
  • Michael
    2021-03-25
    我一直有个疑惑就是当我需要做对某些字段做group by来分组 我可能还需要其他不作为group by的字段 但是根据SQL标准 出现在select后面的字段要么是group by里的字段 要么是聚合函数 那么这种情况应该怎么处理呢?

    作者回复: 既然分组,自然就会只用到分组字段和组内的计算,如果你还要用到其他字段,应该是你这个查询的需求还没有分析好

    共 5 条评论
    4
  • giteebravo
    2021-03-29
    如何像老师一样分析出这些个聚合函数分组统计的步骤?

    作者回复: 多做项目多实践,熟能生巧

    
    2
  • 之墨
    2021-12-03
    老师请教一个问题,一个必录字段在前端已经做了必录校验,还有必要在mysql数据库勾上不能为null的校验吗?为什么呢?

    作者回复: 非常有必要。原因是前端的代码经常会有改动,为了确保数据的正确性,在数据表设计的时候,加上不能为空的校验是很有好处的。

    
    1
  • 上邪忘川
    2021-03-31
    老师你好,每次有新表的时候,可否贴一下建表语句和插入的数据

    作者回复: 这样可能会占用较大的篇幅,不够紧凑

    共 3 条评论
    1
  • Kansei
    2021-03-26
    老师能说说count(*) ,count(1) ,count(列名),这3者的区别吗?

    作者回复: count(*) 意思是统计表中所有的行 count(1) 意思是统计表的行数 count(列名)意思是统计表中列名字段不为NULL的数量 在MySQL中,count(*)和count(1)没什么区别,count(列名)不会把列名字段值为NULL的统计进去

    共 4 条评论
    1
  • 王睿
    2022-04-07 来自广东
    胃还可以哈,都消化吸收了

    作者回复: 多做实操,加深理解

    
    
  • 火车日记
    2022-02-04
    count(*) 和count(1)或count(字段)哪个效率高呢?

    作者回复: count(*)与count(1)差别不大,count(1)稍微高效一点。count(字段)时,如果字段是主键,那么count(字段)更快,否则count(*),count(1)更快一些

    共 2 条评论
    