美文网首页
09,select查询子句——having筛选

09,select查询子句——having筛选

作者: 小碧小琳 | 来源:发表于2018-12-03 14:48 被阅读0次

    需要注意的是,having不是只能对结果集中的数据进行操作,其也可以通过原表数据进行查询筛选。

    要好好看一下这道综合题的练习,对于count,having的使用,以及逻辑判断的结果都有涉及。燕十八mysql-21

    比如,有一个列字段名为score,那么score<60要么返回0,要么返回1。而对于前一篇中所讲,count(arg)中arg等于1或0,结果都是一样的(来一行数一个0,或者来一行数一个1)。。。

    一、查询过程。

    • 1、如果goods表中有a/b/c/d/e列,那么where条件中用到的列也只能是abcde之一。
      如下图,用where进行筛选,也只能对于abcde进行筛选。
    • 2、在经过筛选以及列之间的计算以后,得到了一个结果集,结果集中有新的列xy
    • 3、对于已经用where筛选过的结果集,再用having筛选一下,得到的就是最终结果集。

    二、举个例子

    回顾之前做过的查询:找到店铺价格比市场价格便宜200的商品。07,sql 的查询模型(很重要)

    对于第一步的解释:where只能作用于表中已有的字段。

    其中最后的语句,我们用的是where market_price- shop_price >200.而不是where discount > 200(会出错)

    解释原因是,where只能作用于goods表中已有的列,因此用where market_price- shop_price >200才不会出错。

    对于第二步的解释:经过where筛选以后,会得到一个中间的结果集

    这里,我们令where=1,那么经过筛选的结果集中,有goods_id,market_price,shop_price以及discount字段。

    对于第三步的解释:having对中间的结果集进行筛选。

    这里可以直接用having对中间结果集discount进行筛选了。

    三、查询实例

    3.1、把列字段看成变量,比如,查询商店积压的总贷款(每个商品积压贷款(商品数乘以商品价格)之和),查询每个栏目下的物品的积压贷款(分组即可)

    利用sum。

    继续查询,如有对结果集进行操作。

    3.2、查询出每个商品栏目的积压贷款且筛选出积压金额>20000的栏目

    对结果集进行操作,就要利用having了。(注意,因为是要对结果集进行操作,那么having应该加在上面语句中的group语句后面才是

    3.3、having与where使用再次对比

    相关文章

      网友评论

          本文标题:09,select查询子句——having筛选

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