where 与having的区别
时间: 2023-08-31 19:40:42 浏览: 68
### 回答1:
"where"和"having"是SQL查询语言中的两个不同的关键词。
"where"用于指定一个条件,以过滤表中的记录。例如,如果您想在表中选择所有具有特定值的记录,则可以使用"where"子句。
"having"也用于过滤数据,但它是在聚合函数(如SUM、AVG、COUNT等)已经被应用后进行的。例如,如果您想从已计算出总和的结果中选择特定值,则可以使用"having"子句。
因此,"where"和"having"的区别在于它们用于过滤数据的不同阶段。"where"用于过滤记录,而"having"用于过滤已聚合的数据。
### 回答2:
"where" 与 "having" 是两个在SQL查询中常用的关键字,它们在查询数据时有一些区别。
"where" 子句是用于在查询时对行进行筛选的条件。它在执行查询之前应用,并在从表中选择行时进行过滤。通过 "where" 子句,可以基于列的值来限制返回的结果。例如,可以使用 "where" 子句来选择所有满足特定条件的行,比如 "age > 18" 选择所有年龄大于18岁的人。
相反,"having" 子句是用于在对结果集进行分组后对分组进行筛选的条件。它在 "group by" 子句之后应用,并在结果集中对分组进行筛选。通过 "having" 子句,可以基于聚合函数的结果来限制返回的结果。例如,可以使用 "having" 子句来选择满足特定条件的分组,比如 "sum(sales) > 1000" 选择所有销售总额大于1000的分组。
总结起来,"where" 子句用于对行进行筛选,而 "having" 子句用于对分组进行筛选。这是因为 "where" 子句在查询执行之前应用,而 "having" 子句在查询执行之后应用。