在 MySQL 中 WHERE 与 HAVING 的区别?
我们可以使用一个称为 WHERE 子句的条件子句来过滤结果。使用此 WHERE 子句,我们可以指定一个选择条件,以从一个表中选择所需的记录。HAVING 子句为一组行或聚合指定筛选条件
WHERE 子句不能与聚合函数一起使用,而 HAVING 可以与聚合函数一起使用。以下是一个示例 -
现在,让我们创建一个表。
mysql> create table WhereDemo -> ( -> Price int -> ); Query OK, 0 rows affected (0.64 sec)
将记录插入到表中。
mysql> insert into WhereDemo values(100); Query OK, 1 row affected (0.13 sec) mysql> insert into WhereDemo values(200); Query OK, 1 row affected (0.21 sec) mysql> insert into WhereDemo values(300); Query OK, 1 row affected (0.15 sec) mysql> insert into WhereDemo values(400); Query OK, 1 row affected (0.12 sec)
显示所有记录。
mysql> select *from WhereDemo;
以下为输出。
+-------+ | Price | +-------+ | 100 | | 200 | | 300 | | 400 | +-------+ 4 rows in set (0.00 sec)
HAVING 子句可以与聚合函数一起使用。
mysql> select sum(Price) from WhereDemo HAVING Sum(Price) > 500;
以下为输出。
+------------+ | sum(Price) | +------------+ | 1000 | +------------+ 1 row in set (0.00 sec)
如果我们尝试对聚合函数使用 WHERE,将生成一个 ERROR。
mysql> select sum(Price) from WhereDemo where Sum(Price) > 200; ERROR 1111 (HY000): Invalid use of group function
广告