MySQl语句中的union ,order by 、group by 、having、where等的用法

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降序
  1. where 子句用来筛选 from子句中指定的操作所产生的行。
  2. group by 子句用来分组 where子句的输出。
  3. having 子句用来从分组的结果中筛选行。

查询书写那些和执行顺序

书写顺序	select -> from-> where -> group by -> having ->order by -> limit
执行顺序	from -> join -> on ->where -> group by -> having  -> select -> order by ->limit
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值