having跟where一样, 用来做条件的判断数据的筛选过滤

    在MySQL中,我们可以使用where进行条件的过滤, 也可以使用having.

    示例

    1. # 可以用where也可以用having
    2. SELECT * FROM `t1` WHERE `age` > 18;
    3. SELECT * FROM `t1` HAVING `age` > 18;

    演示

    where和having的区别

    • where中的条件是表字段
    • having中的条件是结果集

    示例

    查询差价>200的商品信息

    # 使用where
    SELECT `goods_name`,  market_price-shop_price as `chajia`
    FROM `goods`
    WHERE market_price-shop_price > 200;
    
    # 使用having
    SELECT `goods_name`,  market_price-shop_price as `chajia`
    FROM `goods`
    HAVING chajia > 200;
    

    group和having综合示例

    查询该店每个栏目下面积压的总货款

    SELECT `cate_id`, sum(goods_number*shop_price) as `jiya`
    FROM `goods`
    GROUP BY `cate_id`;
    

    查询积压货款>1000的栏目

    SELECT `cate_id`, sum(goods_number*shop_price) as `jiya`
    FROM `goods`
    GROUP BY `cate_id`
    HAVING `jiya`>1000;
    

    结论

    1. having通常和group by连用
    2. having的判断条件是结果集