mysql having 与 where
2015-07-31 20:58
585 查看
今天遇到的问题,以前都没思考过太多。
其实区别不是很大,但还是有的。
where 是mysql部分用于查询的过滤条件,也是我们最常用的。
having 是对查询结果进行过滤用的,也就是说只能用于 select后面出现的列名。
其它都一样,where语句怎么写,having语句就怎么写。
举个例子
这个很简单,就是算pc列大于100的数据条数。如果这里把where 换成 having就会报错
原因就是查询结果做为的表里没有一个叫pc的列。
再一个
这个看起来复杂一点,但还好就是找pc平均值大于30,按uid分组的数据。因为apc在查询的结果表里出现,所以这个地方可以用。
其实说到底,也真得是没多少区别。
其实区别不是很大,但还是有的。
where 是mysql部分用于查询的过滤条件,也是我们最常用的。
having 是对查询结果进行过滤用的,也就是说只能用于 select后面出现的列名。
其它都一样,where语句怎么写,having语句就怎么写。
举个例子
SELECT count(*) FROM statis WHERE pc>100;
这个很简单,就是算pc列大于100的数据条数。如果这里把where 换成 having就会报错
20:52:04 SELECT count(*) as k FROM netkafem.agent_statis having pc>100 Error Code: 1054. Unknown column 'pc' in 'having clause' 0.001 sec
原因就是查询结果做为的表里没有一个叫pc的列。
再一个
SELECT uid,avg(pc)as apc FROM statis group by uid having apc>30;
这个看起来复杂一点,但还好就是找pc平均值大于30,按uid分组的数据。因为apc在查询的结果表里出现,所以这个地方可以用。
其实说到底,也真得是没多少区别。
相关文章推荐
- MySQL使用mysqlimport命令导入文本文件
- MySql存储过程动态创建表并插入数据
- 卸载并清理mysql
- 关于2G以上文本文件的MYSQL数据导入 mysql
- (一)mybatis+mysql 基本环境搭建
- mysql的使用和sql语言的学习
- 集群LVS 实现数据共享
- mysql常用字符串操作函数大全,以及实例
- mysql主从复制之已存在的库
- mysql备份
- MySQL之事务&隔离级别&死锁
- 如何正确选择MySQL数据列类型
- MySQL字段类型详解
- mysql的四种启动方式
- mysql 递归查询的方法
- lampp 修改MySQL数据库存储路径
- 利用mysql对特殊字符和超长字符会进行截断的特性 进行存储型XSS攻击——WordPress <4.1.2 & <=4.2 存储型xss
- mysql定义和调用存储过程
- mysql innodb 性能优化
- 查看MySQL的警告信息