mysql进阶_MySQL进阶1

分组查询:

分组查询:将查询结果按照1个或多个字段进行分组,字段值相同的为1组

分组使用:

select 列名 from 表名 group by 列名;

d90617d2b8c741bbc5c9e3bd98257e85.png

当 group by 单独使用时,只显示出每组的第一条记录,所以 group by 单独使用时实际意义不大

在使用分组时,select后面直接跟的字段一般都出现在group by 后

gouup by + group_concat():

group_concat(字段名)可以作为一个输出字段来使用,表示分组之后根据分组结果,使用group_concat()来放置每一组的某字段的值的集合

select 列名1, group_concat(列名2) from 表名 group by 列名1;

3c175455faca5da3ae24a9a93fb5800c.png

group by + 聚合函数:

查询每个部门的部门名称和每个部门的工资和:

e746c96b7b40fd8d30846f5f8edca2f7.png

查询每个部门的名称以及每个部门的人数:

df96ed21d287e5849f2c6f075f31f5ac.png

查询每个部门的部门名称以及每个部门工资大于1500的人数:

cc028814f9580a2700eec6783d6dd12f.png

group by + having:

用来分组查询后指定一些条件来输出查询结果

having作用和where一样,但having只能用于group by

查询工资总和大于9000的部门名称以及工资总和:

4ee839fa7acf90a608f1bbe2f655e701.png

having与where的区别:

having是在分组后对数据进行过滤,where是在分组前对数据进行过滤

having后面可以使用分组函数,where后面则不可以

where是对分组前记录的条件,如果某行记录没有满足where子句的条件,那么这行记录不会参加分组,而having是对分组后的数据进行约束

查询工资大于2000的,工资总和大于6000的部门以及工资总和(降序排列):

56b25690c4d043ba034d517e4d051e4b.png

书写顺序:select-->from-->where-->group by-->having-->order by-->limit

执行顺序:from-->where-->group by-->having-->select-->order by-->limit

limit:

作用:从哪一行开始,要执行几行

limit 参数1, 参数2    参数1:从哪一行开始查    参数2:一共要查几行

角标从0开始

格式:

select * from 表名 limit 参数1, 参数2;

分页思路:

int currentpage = 1  当前页

int pagesize = 3  每页多少条数据

当前页为1第一页从0开始:(1 - 1) * 1 = 0

当前页为2第二页从2开始:(2 - 1) * 2 = 2

当前页为3第三页从6开始:(3 - 1) * 3 = 6

select * from 表名 limit (currentpage - 1) * pagesize, pagesize;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值