博客
关于我
mysql中having的用法
阅读量:790 次
发布时间:2023-02-11

本文共 535 字,大约阅读时间需要 1 分钟。

在MySQL中,当我们需要使用聚合函数如SUM、COUNT等时,为了在统计结果后对数据进行进一步筛选,HAVING子句是非常有用的。与WHERE子句不同,WHERE是用于在聚合之前对数据进行筛选,而HAVING则是在聚合之后对结果进行筛选。理解这两者的区别对于高效编写SQL查询至关重要。

以下是一个典型的例子:假设我们需要统计不同分类(CID)下的答题记录数量,并筛选出每个分类下的答题次数超过2次的记录。

查询分类CID下答题记录的统计结果

SELECT cid, COUNT(id) AS nums FROM xzyd_question GROUP BY cid;

进一步筛选统计结果

为了筛选出每个分类的答题次数超过2次的记录,可以使用HAVING子句:

SELECT cid, COUNT(id) AS nums FROM xzyd_question GROUP BY cid HAVING nums > 2;

注意事项

  • 在HAVING子句中进行的判断条件必须基于聚合函数的返回结果。例如,nums > 2是有效的判断条件,因为它基于COUNT(id)的计算结果。
  • 确保HAVING子句中的条件能够正确反映数据的实际分布,避免因为逻辑错误导致无法获取预期结果。

转载地址:http://hsbfk.baihongyu.com/

你可能感兴趣的文章
MySQL in 太多过慢的 3 种解决方案
查看>>
MySQL InnoDB 三大文件日志,看完秒懂
查看>>
Mysql InnoDB 数据更新导致锁表
查看>>
Mysql Innodb 锁机制
查看>>
MySQL InnoDB中意向锁的作用及原理探
查看>>
MySQL InnoDB事务隔离级别与锁机制深入解析
查看>>
Mysql InnoDB存储引擎 —— 数据页
查看>>
Mysql InnoDB存储引擎中的checkpoint技术
查看>>
Mysql InnoDB存储引擎中缓冲池Buffer Pool、Redo Log、Bin Log、Undo Log、Channge Buffer
查看>>
MySQL InnoDB引擎的锁机制详解
查看>>
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
查看>>
mysql InnoDB数据存储引擎 的B+树索引原理
查看>>
mysql innodb通过使用mvcc来实现可重复读
查看>>
mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
查看>>
mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
查看>>
Mysql join原理
查看>>
MySQL Join算法与调优白皮书(二)
查看>>
Mysql order by与limit混用陷阱
查看>>
Mysql order by与limit混用陷阱
查看>>
mysql order by多个字段排序
查看>>