SQL中Having与Where的区别

 更新时间:2016年01月30日 15:12:45   投稿:hebedich  
何时使用having where,请遵照下面的说明:WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。

含义

where

在分组之前就进行选择操作

having

having在分组操作之后才进行选择操作,所以having可以选择聚合函数
eg:

// 下面这句是可以的
SELECT COUNT(*) FROM A
WHERE A.a1>0
GROUP BY a2;
//但是下面就不行
SELECT COUNT(*) FROM A
WHERE A.a1>0 and count(*)>1
GROUP BY a2;
//必须要改为having
SELECT COUNT(*) FROM A
WHERE A.a1>0
GROUP BY a2
HAVING COUNT(*)>1

相关文章

  • 浅谈数据库缓存最终一致性的四种方案

    浅谈数据库缓存最终一致性的四种方案

    缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景,缓存一致性的保证,更是在面试中被反复问到。下面我们就一起来了解一下
    2021-04-04
  • 一个提升PostgreSQL性能的小技巧

    一个提升PostgreSQL性能的小技巧

    这篇文章主要介绍了一个提升Postgres性能的小技巧,通过修改很少的代码来优化查询,需要的朋友可以参考下
    2015-04-04
  • mssql 区分大小写的详细说明

    mssql 区分大小写的详细说明

    mssql区分大小写,没想到mysql也区分大小写。相关的文章稍后奉献给大家
    2008-03-03
  • MySQL与Oracle 差异比较之七用户权限

    MySQL与Oracle 差异比较之七用户权限

    这篇文章主要介绍了MySQL与Oracle 差异比较之七用户权限,需要的朋友可以参考下
    2017-04-04
  • sql Union和Union All的使用方法

    sql Union和Union All的使用方法

    UNION指令的目的是将两个SQL语句的结果合并起来。从这个角度来看, 我们会产生这样的感觉,UNION跟JOIN似乎有些许类似,因为这两个指令都可以由多个表格中撷取资料。
    2009-07-07
  • 如何查看Navicat加密的数据库密码

    如何查看Navicat加密的数据库密码

    本机装的MySQL数据库密码忘记了,打开了Navicat连接过数据库,不过密码是加密的,怎么办呢?今天小编给大家分享如何查看Navicat加密的数据库密码,感兴趣的朋友一起看看吧
    2023-04-04
  • 浅谈为什么数据库字段建议设置为NOT NULL

    浅谈为什么数据库字段建议设置为NOT NULL

    本文主要介绍了MySQL数据库中将字段设置为NOT NULL的性能和优缺点,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 数据库分页查询方法

    数据库分页查询方法

    在这里主要讲解一下MySQL、SQLServer2000(及SQLServer2005)和ORCALE三种数据库实现分页查询的方法。
    2009-07-07
  • hive函数简介

    hive函数简介

    hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,十分适合数据仓库的统计分析
    2017-09-09
  • Navicat运行SQL文件时触发“1067 - Invalid default value for ‘time‘”错误解决方法

    Navicat运行SQL文件时触发“1067 - Invalid default value for ‘ti

    在使用Navicat进行SQL文件操作时,对于MySQL 5.7及以上版本,可能会触发“1067 - Invalid default value for ‘time’”错误,本文将详细说明此问题的成因,并通过实例分析提供完整的解决方案,包括相关指令的含义和作用,需要的朋友可以参考下
    2024-12-12

最新评论