mysql分组子查询_Mysql-4 分组查询与子查询

1、查询结果的分组操作

a、分组允许把数据分为多个组,以便能对每个组进行聚集计算

b、分组是在select语句的group by 子句中建立的

注意:group by 只是创建分组,但并不保证分组里面的数据的排列顺序,需要使用order by 子句对分组里面的数据进行排序

目的:使用group by 语句对select 查询的结果进行分组,以便统计

实例

数据库:crachsource 表:products 字段:id

统计数量:

select id,count(*) as num_prods from crachsource.products group by id;

2、分组操作实例(解释)

a、select 语句指定了两个列,id 包含产品商家ID,num_prods 为计算字段(使用count()函数)

b、group by 子句按 id 排序并分组数据,这导致对每个id 而不是整个表计算num_prods一次,从而按照id为单位来计算每个组的总和

注意: group by 子句必须出现在where 子句之后,order by 子句之前

3、过滤分组

a、除了能用group by 分组数据外,Mysql 还允许对分组指定条件,规定包含哪些分组,排除哪些分组

b、Mysql 使用having 子句来完成该操作

c、where子句过滤指定的涵,having 子句过滤指定的分组

实例

1) 使用group by + having

数据库:crashsource  表:order 字段:id

筛选在order 中该id出现的次数>=2次(过滤总数大于等于2的分组)

select id,count(*) as oders from crashsource.order group by id having count (*) >= 2;

2)使用where +group by +having

数据库:crashsource 表:order 字段:id 、price

筛选在order 对应用户id 出现次数>=2、价格为10元以上的购买用户

select id,count(*) as num_prods from crashsource.order where price >=10 group by id having count(*) >=2;

4、select 中子句的顺序

a、select 语句中使用的子句必须按照一定的次序,下图列出来各个子句在select 语句中出现的次序

12684755e30e75df85fe92b67b42d7ae.png

5、子查询:嵌套在其他查询中的查询

数据库:crashsource 订单存储在两个表中,order 保存订单号order_num,客户order_id,订单日期

个订单的物品信息保存在orderitems 表,orders 表不储存客户信息,它只保存客户cust_id,实际的客户信息存储在customers 表中

如果需要列出订购物品TNT2的所有客户,客园采用下列步骤

a、查找包含物品TNT2的所有订单的编号;

b、查找前一步骤列出的订单编号的所有客户的id;

c、查找前一步返回的所有客户id的客户信息

1-通过多个查询

select order_num from crashsource.orderitems where order_id = ‘TNT2‘;

如返回:‘001,002’

select cust_id fron crashsource.orders where order_num in (001,002);

2-通过一个查询

select cust_id from crashsource.orders where order_num in (select order_num from crashsource.orderitems where order_id = ‘TNT2‘);

原文:https://www.cnblogs.com/feihan/p/14274563.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值