作者:羊鲜鸡美蟹肥 | 来源:互联网 | 2020-07-17 00:31
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在MySQL中经常会有很多复杂的查询,为了节约大家的时间,小编总结了一些经常用到的复杂查询。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。在MySQL中经常会有很多复杂的查询,为了节约大家的时间,小编总结了一些经常用到的复杂查询。MySQL复杂查询
一、分组查询:
1、关键字:GROUP
BY
2、用法:GROUP
BY 语句用于结合合计函数 (比如 SUM) ,根据一个或多个列对结果集进行分组,合计函数常常需要添加
GROUP BY 语句。
下面的给了两张表 一张是emp,一张是dept,下面的查询我们都对这两张表进行操作,如下图:
第一张:emp表
注:这里我们查询每个部门的工资(sal)总和,所以应该按照部门标号(deptno)进行分组,求和所以用了sum();
3、having:
where 和 having 都是做条件判断,在介绍having前我们看下where 和 having的区别
where的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚合函数,使用where条件显示特定的行。
having的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚合函数,使用having
条件显示特定的组,也可以使用多个分组标准进行分组。
例如:我们要查询emp表中工资总和大于10000的部门编号,语句如下:
SELECT
deptno,SUM(sal)FROM emp GROUP BY deptno HAVING SUM(sal)>10000;
结果如下:
这里的代码看起来很长,其实思路是很明确的,就是把第一个查询结果当作一张表去连接另一张表,这样的思路不容易出错,多练习写起来就
很熟练了。
三、分页:
关键字:LIMIT
语法:select * from tableName 条件 limit 当前页码*页面容量-1 , 页面容量;
一般limit 都和 order by 连用
例如 我们要查询emp表中按部门编号升序排列的5-10的记录,每页显示5条记录,语句如下:
SELECT *FROM emp ORDER BY deptno LIMIT 4,5;
这样就可以查询出想要的结果了,注意最后一个参数5是页面容量,也就是本页要显示的行数(即本页开始行到结束行的记录条数)。
比如我们要查询17页的记录,每页显示10条记录:
LIMIT 17*10-1,10;
四:IN
关键字:In
子查询的返回值结果不只一个条件就必须用IN 不能用"=";
注:LIMIT 都是放在最后的。