为了账号安全,请及时绑定邮箱和手机立即绑定

mysql中的where和having子句的区别

mysql中的where和having子句的区别

拉风的咖菲猫 2019-04-09 09:04:41
mysql中的where和having子句的区别
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

区别1
1、where是判断数据从磁盘读入内存的时候
2、having是判断分组统计之前的所有条件

区别2
1、having子句中可以使用字段别名,而where不能使用

区别3
1、having能够使用统计函数,但是where不能使用

先分组,再判断

查看完整回答
反对 回复 2019-04-10
?
当年话下

TA贡献1890条经验 获得超9个赞

1. 优先级方面:
where优先级高,having低。
优先级从高到低顺序:where,group by, order by ,having limit。
如果多个字句存在,先查前一个条件,再从查询结果中找符合下一个条件的结果,层层筛选查询,得到查询结果。
2. 用法:
where 最常用,后面跟上条件
having一般与group by合用,对前面的查询结果再次筛选。

查看完整回答
反对 回复 2019-04-10
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

having 和where 都是用来筛选用的
having 是筛选组 而where是筛选记录

他们有各自的区别

1》当分组筛选的时候 用having

2》其它情况用where
-----------------------------------------------------
用having就一定要和group by连用,
用group by不一有having (它只是一个筛选条件用的)
-------------------------------------------------------
例子
表结构
部门编号 姓名 工资
1 aa 2000
2 bb 1200
1 cc 2100
2 dd 1800
1 ee 2100
3 ff 8000
2 gg 2200
3 hh 4500

查询有多个员工的工资不低于2000的部门编号
(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来)

select 部门编号,count(*) from 员工信息表
where 工资>=2000
group by 部门编号
having count(*)>1

where 针对每一条记录筛选
而 having 对同一个部门的分组
count(*)>1 计算多于两个的部门

查询结果为

1 3
3 2



查看完整回答
反对 回复 2019-04-10
  • 3 回答
  • 0 关注
  • 550 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信