在本文中,我将介绍WHERE子句和Having子句之间的主要区别。
大多数时候,我们会混淆WHERE子句和Having子句。Having子句和Where子句都过滤来自Select语句的数据,但它们仍然是不同的。我们可以据此区分的主要情景解释如下:
情况1
Having只能在SELECT语句中使用,但WHERE 子句和SELECT,UPDATE和DELETE语句一起使用。
Where 子句
UPDATE employee SET salary=15000 WHERE id=3
Having 子句
UPDATE employee SET salary=15000 Having id=3
Having 子句 将报语法错误
情况2
Having子句用于过滤组,而 WHERE 子句用于过滤行。
情况3
大多数时候 WHERE 或者 Have 子句给出相同的结果。 下面给出的两个 SQL 语句给出了相同的结果。 假设我想要按 DeapartmentID 分组的用户。 为此,请使用 GROUP BY 子句来构建聚合查询。
WHERE 子句
select count(*),DeapartmentID from users where DeapartmentID in (2,3) group by DeapartmentID
Having子句
select count(*),DeapartmentID from users group by DeapartmentID having DeapartmentID in(2,3)
WHERE 子句用于获取特定记录,该子句在 select 语句之后应用,而 Hading 子句用于按功能组合分组。 Have 子句通常用于 GROUP BY 子句中,如果不使用 GROUP BY 函数,则不能编写 have 子句。
Have 子句仅适用于同时出现在 Group by 子句或者聚合函数中的列。
Where子句在数据分组之前应用,而Having子句在数据结果分组之后指定。
日期:2020-06-02 22:18:13 来源:oir作者:oir