wherehaving 是 MySQL 中常见的查询条件使用的关键词, group by 是用于对查询数据进行二次操作的“聚合函数”

一、wherehaving


WHERE 是一个约束声明,使用 where 来约束来自数据库的数据,where 子句的生效是在查询结果返回之前起,其作用范围是连接的数据库中的数据,且 where 子句中不能使用聚合函数。

HAVING 是一个过滤声明,使用 having 用来对查询结果进行的过滤操作, having 子句生效是在查询结果返回之后,作用范围是其他部分查询生效后返回的查询结果,此外在 having 子句中也可以使用聚合函数。

二、聚合函数: group by


GROUP BY 在 SQL 语法中的作用有点类似用 shell 中的 unique 命令, group by 可以将指定的数据列中的数据按照唯一确定的值来分组“聚合”,注意实现特定的查询操作,再次使用 w3school 中的示例,对于如下的数据表 Orders:

O_Id OderDate OrderPrice Customer
1 2008/12/29 1000 Bush
2 2008/11/23 1600 Carter
3 2008/10/05 700 Bush
4 2008/09/28 300 Bush
5 2008/08/06 2000 Adams
6 2008/07/21 100 Carter

假设希望查找每个客户的总金额(总订单),可以使用查询语句:

SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer;

SUM() 函数可以对指定列中的数据进行求和操作,本次查询的结果:

Customer SUM(OrderPrice)
Adams 2000
Bush 2000
Carter 1700

最终通过 GROUP BY 子句实现了按照不同的用户“分组”查询各自总订单金额的目的。