美文网首页
WHERE和HAVING的区别

WHERE和HAVING的区别

作者: 钟离惜 | 来源:发表于2020-12-26 22:40 被阅读0次

1、处于的语句不一样

WHERE可以用于增删改查,但是HAVING只能用于SELECT。

2、HAVING只能用于SELECT的字段或SELECT AS的临时字段

SELECT DISTINCT(color) FROM xg_base_itemtype HAVING price>=2;

报错:Unknown column 'price' in 'having clause'。

3、误区:HAVING只能与GROUP BY一起使用

这个说法是错误的,比如下面这种情况,在筛选SELECT出来的字段时,其实HAVING和WHERE 的效果是一样的。

SELECT DISTINCT(color) FROM xg_base_itemtype HAVING color>=2;

4、WHERE不可以使用聚合函数、HAVING可以使用聚合函数

聚合函数就是例如SUM, COUNT, MAX, AVG等对一组(多条)数据操作的函数,可能需要配合group by 来使用。
WHERE的条件只能来自表中已有的字段。

SELECT COUNT(*) AS total_num FROM xg_base_itemtype WHERE total_num >10 GROUP BY color;
报错:Unknown column 'total_num' in 'where clause'。
SELECT COUNT(*) AS total_num FROM xg_base_itemtype GROUP BY color HAVING total_num >10;

而HAVING可以直接筛选聚合函数的结果。

5、运行顺序不一样

WHERE的过滤在执行语句进行分组之前应用的。
HAVING的过滤是在分组条件后执行的。
即如果WHERE和HAVING一起用时,WHERE会先执行,HAVING后执行。

相关文章

  • SQL中where与having的使用

    SQL中where与having的使用 where和having的区别 聚合函数和group by where 和...

  • where 和 having区别

    1. 前言 在 MySQL 中使用 select 查询语句的时候,一般都会加上 where 语句或者 limit ...

  • having 和 where的区别

    区别1 where是从数据表中的字段直接进行的筛选的。 having是从 前面筛选的字段再筛选 eg:select...

  • Having和Where的区别

    “Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Whe...

  • WHERE和HAVING的区别

    1、处于的语句不一样 WHERE可以用于增删改查,但是HAVING只能用于SELECT。 2、HAVING只能用于...

  • MySQL之Where和Having的区别

    MySQL之Where和Having的区别 对于使用where和having,相信很多人都有过困扰,今天就来讲一下...

  • Mysql中having和where的区别

    having子句与where都是设定条件筛选的语句,有相似之处也有区别。 having与where的区别:havi...

  • 常用SQL相关

    1. where和having的区别? where和having都可以使用的场景:当筛选条件在要查询的字段中都有的...

  • 不同数据库 selecto top N 的用法

    having 和 where 的区别: where 子句中不能有聚组函数(sum,count,avg,max) 一...

  • where、having的区别

    where是对查询前,将不符合条件的去掉。在分组之前过滤数据,所以后边不能跟聚合函数。 having是筛选满足条件...

网友评论

      本文标题:WHERE和HAVING的区别

      本文链接:https://www.haomeiwen.com/subject/clqnnktx.html