时间:2023-10-27来源:系统城装机大师作者:佚名
在 MySQL 中,HAVING 和 WHERE 是用于筛选数据的两个关键字,它们有以下区别和用法:
用途:
WHERE:WHERE 子句用于在执行查询之前筛选行。它可用于过滤 SELECT、UPDATE、DELETE 语句中的行,根据指定的条件选择要操作的数据行。HAVING:HAVING 子句用于在执行聚合查询后筛选结果集。它仅能在包含聚合函数(如 SUM、COUNT、AVG 等)的 SELECT 语句中使用,并在查询结果进行聚合操作后,对聚合结果进行筛选。位置:
WHERE:WHERE 子句通常出现在 SELECT、UPDATE、DELETE 语句的 FROM 子句之后、GROUP BY 子句之前。HAVING:HAVING 子句通常出现在 GROUP BY 子句之后、ORDER BY 子句之前。过滤条件:
WHERE:WHERE 子句用于指定过滤条件,其中可以使用比较操作符(如 =, <>, <, >, BETWEEN, IN 等)和逻辑操作符(如 AND, OR, NOT)。HAVING:HAVING 子句用于指定对聚合结果的过滤条件,其中可以使用比较操作符和逻辑操作符,也可以使用聚合函数。示例: 假设有一个名为 orders 的表,其中包含 customer_id(客户ID)和 total_price(总价格)字段。我们希望查找每个客户的总价格大于 100 的订单。
使用 WHERE 子句的示例:
| 1 2 3 4 5 |
sqlCopy codeSELECT customer_id, SUM(total_price) AS totalFROM ordersGROUP BY customer_idHAVING total > 100; |
使用 HAVING 子句的示例:
| 1 2 3 4 5 |
sqlCopy codeSELECT customer_id, SUM(total_price) AS totalFROM ordersGROUP BY customer_idHAVING SUM(total_price) > 100; |
在上述示例中,WHERE 子句无法直接使用聚合函数,因此我们使用 GROUP BY 子句将结果按客户ID分组,并在 HAVING 子句中筛选出总价格大于 100 的订单。
WHERE 子句用于在执行查询之前筛选行,而 HAVING 子句用于在执行聚合查询后筛选结果集。WHERE 出现在 FROM 子句之后,GROUP BY 子句之前;而 HAVING 出现在 GROUP BY 子句之后、ORDER BY 子句之前。WHERE 可以使用比较操作符和逻辑操作符来指定过滤条件,而 HAVING 不仅可以使用比较操作符和逻辑操作符,还可以使用聚合函数。到此这篇关于MySQL中having和where的区别及应用详解的文章就介绍到这了
2023-10-30
windows上的mysql服务突然消失提示10061 Unkonwn error问题及解决方案2023-10-30
MySQL非常重要的日志bin log详解2023-10-30
详解MySQL事务日志redo log一、单表查询 1、排序 2、聚合函数 3、分组 4、limit 二、SQL约束 1、主键约束 2、非空约束 3、唯一约束 4、外键约束 5、默认值 三、多表查询 1、内连接 1)隐式内连接: 2)显式内连接: 2、外连接 1)左外连接 2)右外连接 四...
2023-10-30
Mysql删除表重复数据 表里存在唯一主键 没有主键时删除重复数据 Mysql删除表中重复数据并保留一条 准备一张表 用的是mysql8 大家自行更改 创建表并添加四条相同的数据...
2023-10-30