返回顶部
首页 > 资讯 > 数据库 >SQL中where子句与having子句的区别有哪些
  • 103
分享到

SQL中where子句与having子句的区别有哪些

2024-04-02 19:04:59 103人浏览 泡泡鱼
摘要

这篇文章主要介绍了sql中where子句与having子句的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Wh

这篇文章主要介绍了sql中where子句与having子句的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。SQL中where子句与having子句的区别。

1.where 不能放在GROUP BY 后面

2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE

3.WHERE 后面的条件中不能有聚集函数,比如SUM(),AVG()等,而HAVING 可以
Where和Having都是对查询结果的一种筛选,说的书面点就是设定条件的语句。下面分别说明其用法和异同点。注:本文使用字段为oracle数据库中默认用户scott下面的emp表,sal代表员工工资,deptno代表部门编号。

一、聚合函数

说明前我们先了解下聚合函数:聚合函数有时候也叫统计函数,它们的作用通常是对一组数据的统计,比如说求最大值,最小值,总数,平均值(
MAX,MIN,COUNT, AVG)等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。简单举个例子:SELECT SUM(sal) FROM emp,这里的SUM作用是统计emp表中sal(工资)字段的总和,结果就是该查询只返回一个结果,即工资总和。通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。

二、where子句

where自居仅仅用于从from子句中返回的值,from子句返回的每一行数据都会用where子句中的条件进行判断筛选。where子句中允许使用比较运算符(>,<,>=,<=,<>,!=|等)和逻辑运算符(and,or,not)。由于大家对where子句都比较熟悉,在此不在赘述。

三、having子句

having子句通常是与order by 子句一起使用的。因为having的作用是对使用group by进行分组统计后的结果进行进一步的筛选。举个例子:现在需要找到部门工资总和大于10000的部门编号?

第一步:

select deptno,sum(sal) from emp group by deptno;

筛选结果如下:

DEPTNO SUM(SAL)
—— ———-
30 9400
20 10875
10 8750

可以看出我们想要的结果了。不过现在我们如果想要部门工资总和大于10000的呢?那么想到了对分组统计结果进行筛选的having来帮我们完成。

第二步:

select deptno,sum(sal) from emp group by deptno having sum(sal)>10000;

筛选结果如下:

DEPTNO SUM(SAL)
—— ———-
20 10875

当然这个结果正是我们想要的。

四、下面我们通过where子句和having子句的对比,更进一步的理解它们。

在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行,简单的理解为只有有了统计结果后我才能执行筛选。where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count),因为它是一句一句筛选的。HAVING子句可以让我们筛选成组后的对各组数据筛选。,而WHERE子句在聚合前先筛选记录。如:现在我们想要部门号不等于10的部门并且工资总和大于8000的部门编号?

我们这样分析:通过where子句筛选出部门编号不为10的部门,然后在对部门工资进行统计,然后再使用having子句对统计结果进行筛选。

select deptno,sum(sal) from emp 
where deptno!='10' group by deptno
having sum(sal)>8000;

筛选结果如下:

DEPTNO SUM(SAL)
—— ———-
30 9400
20 10875

五、异同点

它们的相似之处就是定义搜索条件,不同之处是where子句为单个筛选而having子句与组有关,而不是与单个的行有关。
最后:理解having子句和where子句最好的方法就是基础select语句中的那些句子的处理次序:where子句只能接收from子句输出的数据,而having子句则可以接受来自group by,where或者from子句的输入。

感谢你能够认真阅读完这篇文章,希望小编分享的“SQL中where子句与having子句的区别有哪些”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: SQL中where子句与having子句的区别有哪些

本文链接: https://lsjlt.com/news/55532.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL中where子句与having子句的区别有哪些
    这篇文章主要介绍了SQL中where子句与having子句的区别有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Wh...
    99+
    2024-04-02
  • mysql中where和having子句的区别是什么
    本篇文章为大家展示了mysql中where和having子句的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。having的用...
    99+
    2024-04-02
  • SQL中Where与Having的区别
    “Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。“Having”是...
    99+
    2024-04-02
  • sql语句中where和having的区别是什么
    这篇文章主要介绍“sql语句中where和having的区别是什么”,在日常操作中,相信很多人在sql语句中where和having的区别是什么问题上存在疑惑,小编查...
    99+
    2024-04-02
  • SQL中Having与Where有什么区别
    本篇文章为大家展示了SQL中Having与Where有什么区别,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。区别介绍:  &...
    99+
    2024-04-02
  • sql中where和having的区别
    where 和 having 子句在 sql 中均用于过滤数据,但作用范围不同:where 子句过滤单行,having 子句过滤分组后的结果集。w...
    99+
    2024-05-01
    聚合函数
  • sql中having和where的区别
    在 sql 中,having 和 where 都用于过滤数据,但它们的区别在于:where 过滤单个行,而 having 过滤聚合函数的结果。wh...
    99+
    2024-05-07
    聚合函数
  • SQL中Having与Where的区别是什么
    本篇文章给大家分享的是有关SQL中Having与Where的区别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。含义w...
    99+
    2024-04-02
  • SQL 中having 和where有什么区别
    今天就跟大家聊聊有关SQL 中having 和where有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在selec&#...
    99+
    2024-04-02
  • SQL中where和having有什么区别
    本篇内容主要讲解“SQL中where和having有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL中where和ha...
    99+
    2024-04-02
  • mysql中where和having的区别
    where 子句过滤行,应用于分组前;having 子句过滤组,应用于分组后且可使用组聚合函数的结果。 WHERE 与 HAVING 子句的区别 在...
    99+
    2024-05-02
    mysql 聚合函数
  • oracle中where和having的区别
    where 和 having 子句的区别在于作用范围:where 过滤基础行,having 过滤分组结果集。where 用于单个行条件,...
    99+
    2024-05-03
    oracle 聚合函数
  • oracle中where与having的区别是什么
    今天就跟大家聊聊有关oracle中where与having的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.wher...
    99+
    2024-04-02
  • 在Oracle中where和having的区别
        首先,where是针对单个语句的,having是针对组的。并且优先级是where>group by>havin...
    99+
    2024-04-02
  • Mysql中where与having的区别实例详解
    以一道题来做引子 牛客,SQL30 计算总和 OrderItems表代表订单信息,包括字段:订单号order_num和item_price商品售出价格、quantity商品数量。 order_numitem_priceq...
    99+
    2023-01-09
    mysql where和having的区别 数据库中where和having的区别 sql语句where和having的区别
  • Having子句在MySQL中的用法
    在 MySQL 中,HAVING 子句用于在 GROUP BY 子句之后过滤分组的结果。它允许你使用聚合函数来筛选分组后的数据。HAVING 子句的语法如下: SELECT column1, column2, .....
    99+
    2023-10-03
    mysql 数据库 sql
  • MySQL having关键字详解、与where的区别
    1、having关键字概览 1.1、作用 对查询的数据进行筛选 1.2、having关键字产生的原因 使用where对查询的数据进行筛选时,where子句中无法使用聚合函数,所以引出havin ...
    99+
    2023-10-25
    mysql 数据库 java
  • SQL语句过滤条件放在on与where子句中的区别和联系浅析
    目录摘要:综述过滤条件放在on和where中的区别小结Reference摘要: 介绍在多表关联SQL语句中,过滤条件放在on和where子句中的区别——inner join中没...
    99+
    2024-04-02
  • mysql中select和where子句优化的方法有哪些
    小编给大家分享一下mysql中select和where子句优化的方法有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去...
    99+
    2024-04-02
  • 在sql查询中如何使用where子句
    这篇文章将为大家详细讲解有关在sql查询中如何使用where子句,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在sql查询中使用where子句指出的是...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作