• 朱晓峰
    置顶
    2021-04-21
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了如何进行多表查询。下面是思考题的答案: 如果不能使用外键约束,你可以在应用层增加确保数据完整性的功能模块,比如删除主表记录时,增加检查从表中是否应用了这条记录的功能,如果应用了,就不允许删除。
    共 1 条评论
    6
  • 洛奇
    2021-03-30
    筛选条件放在ON或者WHERE子句中,都是一样的吧?

    作者回复: ON后面的字句是连接条件,WHERE后面的子句才是筛选条件,不一样的

    共 3 条评论
    6
  • 青雘
    2021-07-13
    有数据库的数据包吗 ? 这咋动手 没有数据

    作者回复: 很抱歉数据包是不能提供的,可以自己动手创建数据,也是一种很好的练习

    
    4
  • SharpBB
    2022-02-09
    WHERE 直接用表字段对数据集进行筛选 得到较少的数据集 再进行连接 资源占用少 执行效率高 HAVING 需要将数据准备好 并进行分组形成集合 再对该集合进行having条件的筛选 两者区别 1.where先筛选后连接 having先连接后筛选 where的效率更高 2.where可以直接用 而having必须和group by一起用才可以 3.可以在having中用函数 但where不行 所以having可以做一些更nb的查询

    作者回复: 好的

    
    1
  • hello
    2021-07-12
    sql语句的执行顺序,不是先执行join 再执行where吗?老师在提到where优点的时候说where的优点是先筛选在关联。这里似乎跟sql执行的顺序有了矛盾呢

    作者回复: mysql优化器在制定查询计划的时候,会对查询进行优化,比如重写查询语句,目的是提高查询的速度效率,不会机械按照固定的顺序执行。

    
    1
  • Cheese
    2022-02-15
    group by不是很理解,和having配合在一起使用有点懵了。

    作者回复: group by是对数据进行分组,having则是对结果集进行限定,建议再复习一下课程中的相关内容

    
    
  • Bird
    2021-10-22
    老师您好,用 HAVING 查询单笔超过 50 元商品的 SQL 中,用到了 HAVING max(a.salesvalue)>50 这个 max() 我不太理解,是指在分组后对每个组中的 salesvalue 取最大值再和 50 比较吗? 这块不明白导致后面原文说的“第三步,对分组后的数据集进行筛选,把组中字段“salesvalue”的最大值 >50 的组筛选出来。”就更不明白了。 我的疑问是,需求是找到比 50 大的就好,不理解这里为什么用到求最大值。求的是哪些数据范围的最大值呢?

    作者回复: 这里用max()的主要目的是,消除结果集中的重复记录。获得正确结果的方法不止一种,文中的查询主要是为了演示HAVING()的用法。

    共 3 条评论
    
  • 彭彬
    2021-09-12
    HAVING 后面的条件,必须是包含分组中的计算函数的条件,或者select后面的字段

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

    
    
  • born
    2021-06-30
    在“查询单笔销售金额超过 50 元的商品”例子中的第三步,GROUP BY只用goodsname字段结果只返回了组中的第一条数据,想要返回图示中的两条数据还要添加另外的字段吧

    作者回复: 是的,由于2条记录的商品名称相同,用商品名称来分组,结果就是一条数据,如果分组中加上销售金额,就是2条数据了

    
    
  • 沈康
    2021-05-20
    有这样一种说法:HAVING 后面的条件,必须是包含分组中的计算函数的条件,你觉得对吗?为什么? 我认为是对的,既然 having是在group之后的筛选,那么只能选择group的计算函数

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

    
    