having理解概念

首先说一下having的概念:HAVING子句主要用于对聚合函数的分组结果进行筛选,通常与GROUP BY一起使用。如果没有GROUP BY,通常使用WHERE子句来筛选行而不是使用HAVING子句,但也是可以使用HAVING,只是不推荐。


  • having子句即可包含聚合函数作用的字段也可以包括普通的标量字段

HAVING子句用于筛选分组后的结果集,可以包括聚合函数作用的字段以及普通的标量字段。

  • 使用having的同时可以使用where子句

WHERE子句用于筛选从表中检索的行,而HAVING子句用于筛选分组后的结果。我们可以在同一查询中同时使用WHERE和HAVING,分别对行和分组进行筛选。

  • having子句可以脱离于group by子句使用,效果与where一样,但不推荐没有group by时使用having

这里可能存在一些混淆。HAVING子句通常与GROUP BY子句一起使用,用于对分组后的数据进行过滤。如果没有GROUP BY子句,HAVING子句的效果与WHERE子句类似,但是在没有GROUP BY的情况下使用HAVING通常是不合理的,因为它的主要目的是筛选分组。在没有GROUP BY的情况下,应该使用WHERE来筛选行。

  • 使用having子句的作用是限定分组条件

HAVING子句用于在GROUP BY子句中对分组进行条件筛选,它允许筛选聚合结果,例如,仅选择总和大于某个值的分组。

  • select语句中没有聚合函数时,也可以使用having子句

这个说法确实不正确。在SELECT语句中没有聚合函数的情况下,HAVING子句没有合适的用途,使用它可能导致语法错误或不符合查询的逻辑目标。所以不推荐这样使用,之前只是想表达可以用,但现在看来没有任何意义。


文档最初发布于20年底,现在看来之前确实有很多没有说清楚和错误的地方,所以加了一些解释和修改,希望大家随时评论,我会及时修改。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
在数据库系统中,单表查询和多表查询是两种常见的查询方式,具有以下基本概念: 1. 单表查询(Single Table Query):单表查询是指在一个表中进行数据检索和筛选的操作。它是最简单的查询方式,仅涉及到一个数据库表。通过单表查询,可以根据特定的条件检索出满足条件的记录。 主要概念包括: - SELECT语句:用于指定要检索的列和表名。 - WHERE子句:用于指定查询条件,对记录进行筛选。 - ORDER BY子句:用于指定查询结果的排序方式。 - GROUP BY子句:用于对查询结果进行分组统计。 - HAVING子句:用于对分组后的结果进行筛选。 2. 多表查询(Multiple Table Query):多表查询是指在多个表之间进行关联操作,并从中检索和筛选数据的操作。在多表查询中,可以通过表之间的关联条件连接数据,获取相关联的数据。 主要概念包括: - JOIN操作:用于将多个表连接起来,根据关联条件获取相关数据。常用的JOIN操作包括INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。 - ON条件:用于指定关联条件,连接两个或多个表之间的字段。 - 别名(Alias):为表或列指定别名,简化查询语句并避免重名冲突。 - 子查询(Subquery):在查询语句中嵌套其他查询语句,用于进一步筛选和限制结果集。 通过单表查询,可以对单个表进行数据检索和操作;而多表查询则允许从多个相关联的表中获取相关数据,提供更丰富的查询功能。理解和掌握单表查询和多表查询的基本概念是数据库系统中进行数据检索和筛选的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值