mysql 使用count(),sum()等作为条件查询
2017-05-25 14:42
495 查看
在开发时,我们经常会遇到以“累计(count)”或是“累加(sum)”为条件的查询。比如user_num表:
例1:查询出现过2次的user。
往往初学者会错误地认为在where 语句里直接使用count()算法,很显然这个想法是错误的,count()方法并不能被用在where子句中,为了解决问题,我们可以在group by子句后面使用HAVING来做条件限制。
错误做法:select * from user_num where count(user)>=2 group by user;
正确做法:select * from user_num group by user HAVING count(user)>=2 ;
解释说明:HAVING 与 WHERE 类似,可用来决定选择哪些记录。HAVING 子句在SELECT语句中指定,显示哪些已用 GROUP BY 子句分组的记录。在GROUP BY组合了记录后, HAVING会显示 GROUP BY 子句分组的任何符合 HAVING 子句的记录。
例2:查询单一用户的num总和大于10的用户。
有前面的经验,把sum()方法写在HAVING子句中。
正确做法:select * from user_num group by user HAVING sum(num)>10 ;
注意:一个HAVING子句最多只能包含40个表达式,HAVING子句的表达式之间可以用AND和OR分割。
sql语句的执行顺序:
(1)from 选取数据源;
(2)where 筛选数据源;
(3) group by 将筛选的数据源分组;
(4)使用聚集函数计算;
(5)having 筛选分组的数据;
(6)计算表达式;
(7)order by 排序;
参考:1.http://blog.csdn.net/ivan820819/article/details/46877597
2.http://blog.csdn.net/qq_32345239/article/details/52288013
[align=center]id[/align] | [align=center]user[/align] | [align=center]num[/align] |
[align=center]1[/align] | [align=center]a[/align] | [align=center]3[/align] |
[align=center]2[/align] | [align=center]a[/align] | [align=center]4[/align] |
[align=center]3[/align] | [align=center]b[/align] | [align=center]5[/align] |
[align=center]4[/align] | [align=center]b[/align] | [align=center]7[/align] |
往往初学者会错误地认为在where 语句里直接使用count()算法,很显然这个想法是错误的,count()方法并不能被用在where子句中,为了解决问题,我们可以在group by子句后面使用HAVING来做条件限制。
错误做法:select * from user_num where count(user)>=2 group by user;
正确做法:select * from user_num group by user HAVING count(user)>=2 ;
解释说明:HAVING 与 WHERE 类似,可用来决定选择哪些记录。HAVING 子句在SELECT语句中指定,显示哪些已用 GROUP BY 子句分组的记录。在GROUP BY组合了记录后, HAVING会显示 GROUP BY 子句分组的任何符合 HAVING 子句的记录。
例2:查询单一用户的num总和大于10的用户。
有前面的经验,把sum()方法写在HAVING子句中。
正确做法:select * from user_num group by user HAVING sum(num)>10 ;
注意:一个HAVING子句最多只能包含40个表达式,HAVING子句的表达式之间可以用AND和OR分割。
sql语句的执行顺序:
(1)from 选取数据源;
(2)where 筛选数据源;
(3) group by 将筛选的数据源分组;
(4)使用聚集函数计算;
(5)having 筛选分组的数据;
(6)计算表达式;
(7)order by 排序;
参考:1.http://blog.csdn.net/ivan820819/article/details/46877597
2.http://blog.csdn.net/qq_32345239/article/details/52288013
相关文章推荐
- mysql count(),sum()等作为条件查询
- mysql count(),sum()等作为条件查询
- mysql的count查询中使用条件
- MySQL中不允许使用列别名作为查询条件
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- MySQL中不允许使用列别名作为查询条件
- mysql使用别名作为查询条件的两种方式,必有一种适合你
- MySql使用全记录3 -----以中文作为查询条件时结果为空的原因以及两个MySql小知识点(varchar、单双引号)
- SQL中以count及sum为条件的查询
- 关于一个MYSQL语法(在查询中使用count)的兼容性问题
- MYSQL中SUM字段按条件统计使用IF函数(case)
- java中使用mysql查询 条件中含有中文时查询不到结果解决方案
- MYSQL中有关SUM字段按条件统计使用IF函数(case)问题
- Sql server 查询条件中将通配符作为文字使用
- 一步步学习Reporting Services(二) 在报表中使用简单的参数作为查询条件
- SQL中以count或sum为条件的查询方式
- 浅析一个MYSQL语法(在查询中使用count)的兼容性问题
- SQL中以count及sum为条件的查询
- hibernate使用sum聚集函数,时间段为查询条件连接SQL2005
- DB2中使用sum替代count的查询