Mysql中group by和order by的区别

order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 
group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。

我在数据库课程设计做了一个管理楼市的数据库,其中的两个表(交易信息表)和(客户信息表)

                               

                                        交易信息表                                                                              客户信息表

 

要求的检索信息是:管理员查询所有客户的信息及是否存在房屋交易行为

刚开始的SQL语句为:

select client_info.Client_Name,Address,identity_card,TradeForm,Time_limit 
from client_info left join  trade_info on 
trade_info.Client_Name=client_info.Client_Name 
group by TradeForm

但检索到的信息是这样的:

只检索道三条信息,根据TradeForm排序,因为left join的原因Client_Name的顺序和左边的表trade_info一致。可以得到案例中group by的操作过程大致如下:

1.根据on 后面的联合条件对两表进行left join操作

2.将拥有相同TradeForm的行分到一组

3.找到各个组内的第一个满足的行返回

将group by和having语句结合的例子较多,having 提供了对 group检索的能力,返回的自然是满足having条件的组,而不是单个组内的行。

having主要通过聚合表达式筛选满足条件的组,对象是数字类型的数据。

AVG([distinct] expr)

求平均值
COUNT({*|[distinct] } expr)统计行的数量
MAX([distinct] expr)求最大值
MIN([distinct] expr)求最小值
SUM([distinct] expr)求累加和

回到上面的例子,需要正确检索到信息只需要将group by 改成order by即可

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值