HAVING 與 MySQL 資料庫的 GROUP BY


要在 MySQL 資料庫中同時使用 HAVING 和 GROUPBY,需要按照以下語法進行編寫。此處,我們在 HAVING 下設定一個條件來檢查最大值條件 −

SELECT yourColumnName FROM yourTableName GROUP BY yourColumnName HAVING MAX(yourColumnName) < yourValue;

讓我們透過在 MySQL 資料庫中建立一個表來檢視一個示例 −

mysql> create table WhereAfterGroupDemo
-> (
-> UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserProcess int,
-> UserThreadId int
-> );
Query OK, 0 rows affected (5.74 sec)

示例

使用 insert 命令在表中插入一些記錄。查詢如下 −

mysql> insert into WhereAfterGroupDemo(UserProcess,UserThreadId) values(1211,3);
Query OK, 1 row affected (0.10 sec)
mysql> insert into WhereAfterGroupDemo(UserProcess,UserThreadId) values(1412,3);
Query OK, 1 row affected (0.39 sec)
mysql> insert into WhereAfterGroupDemo(UserProcess,UserThreadId) values(1510,4);
Query OK, 1 row affected (0.19 sec)
mysql> insert into WhereAfterGroupDemo(UserProcess,UserThreadId) values(1511,4);
Query OK, 1 row affected (0.31 sec)

使用 select 語句顯示錶中的所有記錄。查詢如下 −

mysql> select *from WhereAfterGroupDemo;

輸出

+--------+-------------+--------------+
| UserId | UserProcess | UserThreadId |
+--------+-------------+--------------+
|      1 | 1211        |            3 |
|      2 | 1412        |            3 |
|      3 | 1510        |            4 |
|      4 | 1511        |            4 |
+--------+-------------+--------------+
4 rows in set (0.00 sec)

以下是同時使用 HAVING 和 GROUP BY 來獲取程序低於 1510 的 UserThreadId 的查詢 −

mysql> SELECT UserThreadId FROM WhereAfterGroupDemo GROUP BY UserThreadId HAVING MAX(UserProcess) < 1510;

輸出

+--------------+
| UserThreadId |
+--------------+
|            3 |
+--------------+
1 row in set (0.00 sec)

更新時間:06-03-2020

333 次瀏覽

開啟你的 職業生涯

完成課程即可獲得認證

開始
廣告
© . All rights reserved.