where
和having
两者本身应用于SQL中的select
查询语句中,两者扮演的角色都为条件语句。
,
用法
where
select 想要获取的属性 from 表名 where 条件;
select * from child where sex = 'boy'; 查找child表中性别为男的所有孩子的信息
select name,sex,age,school from child where adress = 'shanghai';
查找child表中生活在上海的孩子的姓名、性别、年龄及学校的信息
select name,sex,age,adress from XiAn where like = "%杉%";
查找XiAn表中名字含有“杉”这个字的所有人的姓名、年龄、性别及地址这些信息
having
select 想要获取的属性 from 表名 group by 分组条件 having 查询条件;
select * from emp group by deptno having sal>1500;
查找emp(员工表)中按deptno(部门)分组并sal(工资)高于1500的所有人员信息
select * from emp group by deptno having sum(sal)>15000;
查找emp(员工表)中按deptno(部门)分组并sal(总工资)高于15000的所有人员信息
where和having
查询工资大于1500,部分工资大于6000部门编号及工资和
select deptno,sun(sal) from emp where sal>1500 group by deptno having sum(sal)>6000;
区别:
1,两者在select
语句中都可以作为条件;
2,having
是在分组之后对数据进行过滤,where
是在分组之前对数据进行过滤;
3,having
之后还可以跟聚合函数,而where
是不可以的;
4,where
用于精准查询,除了与like
配合使用之外;
5,having
的使用必须与group by
结合使用,否则报错。