union
union 和 union all 联合
union 保证两张表的列 相同
union 可以连接两张表的查询结果 去掉重复的数据
union all 不能去掉重复的数据
where
是在分组之前使用,表示从所有数据中筛选出部分数据,以完成分组的要求, 在where子句中不允许使用统计函数,没有group by子句也可以使用。
having
是在分组之后使用的,表示对分组统计后的数据执行再次过滤,可以使用 ,统计函数,有group by子句之后才可以出现having子句。
参考一个大佬的解法
此处where和having都可以用
select goods_price,goods_name from sw_goods having(where) goods_price > 100
只可以用where 不可以用having
select goods_name,goods_number from sw_goods where goods_price > 100
只可以用having 不可用where
select goods_category_id , avg(goods_price) as ag from sw_goods group by goods_category having ag > 1000
group by
group by 分组查询、having 只能用于group by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group by 子句的查询语句需要使用聚合函数。 聚合函数 sum max min avg
order by
order by 排序查询、asc升序、desc降序
- where 子句用来筛选 from子句中指定的操作所产生的行。
- group by 子句用来分组 where子句的输出。
- having 子句用来从分组的结果中筛选行。
查询书写那些和执行顺序
书写顺序 select -> from-> where -> group by -> having ->order by -> limit
执行顺序 from -> join -> on ->where -> group by -> having -> select -> order by ->limit