select语句的⼦句以及⼦查询
1.select语句的各个⼦句
按顺序:
(1)from:从哪些表中筛选
(2)where:从表中筛选的条件
(3)group by:分组依据
(4)having:在统计结果中再次筛选
(5)order by:排序
(6)limit:分页
having与where的区别?
(1)where是从表中筛选的条件,⽽having是统计结果中再次筛选
(2)where后⾯不能加“分组/聚合函数”,⽽having后⾯可以跟
order by:
降序:desc
升序:⽤么默认,要么加asc
limit:
limit m,n
m = (第⼏页 - 1)*每页的数量
n = 每页的数量
代码⽰例:
#查询每个部门的男⽣的⼈数,并且显⽰⼈数超过5⼈的,按照⼈数降序排列,
#每页只能显⽰10条,我要第2页
SELECT did,COUNT(*)"⼈数"
FROM t_employee
WHERE gender ='男'
GROUP BY did
HAVING COUNT(*)>5
ORDER BY⼈数DESC
LIMIT10,10
2.⼦查询
嵌套在另⼀个查询中的查询,根据位置不同,分为:
(1)where型
①⼦查询是单值结果,那么可以对其使⽤(=,>等⽐较运算符)
②⼦查询是多值结果,那么可对其使⽤(【not】in(⼦查询结果),或 >all(⼦查询结果),或>=all(⼦查询结果),<all(⼦查询结果),<=all(⼦查询结果),或 >any(⼦查询结果),或>=any(⼦查询结果),<any(⼦查询结果),<=any(⼦查询结果))
(2)from型
必须给⼦查询取别名
(3)exists
所有⼦查询必须使⽤()括起来
select语句查询日期⽰例代码:
查询全公司最⾼⼯资的员⼯信息
select*from员⼯表where薪资=(select max(薪资)from员⼯表);
查询每个部门的编号,名称,平均⼯资
select部门编号,部门名称,平均⼯资
from部门表inner join(select部门编号,avg(薪资)from员⼯表group by部门编号)temp on部门表.部门编号=temp.部门编号
查询那些有员⼯的部门
select部门编号,部门名称from部门表
where exists(select*from员⼯表where部门表.部门编号=员⼯表.部门编号);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论