在 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

更新日期:2019 年 7 月 30 日

172 次瀏覽

開啟你的 事業

完成課程獲得認證

開始學習
廣告
© . All rights reserved.