Để sử dụng HAVING với GROUPBY trong MySQL, sau đây là cú pháp. Ở đây, chúng tôi đã đặt một điều kiện trong HAVING để kiểm tra điều kiện giá trị lớn nhất -
SELECT yourColumnName FROM yourTableName GROUP BY yourColumnName HAVING MAX(yourColumnName) < yourValue;
Hãy để chúng tôi xem một ví dụ bằng cách tạo một bảng trong 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)
Ví dụ
Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -
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)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng một câu lệnh chọn. Truy vấn như sau -
mysql> select *from WhereAfterGroupDemo;
Đầu ra
+--------+-------------+--------------+ | UserId | UserProcess | UserThreadId | +--------+-------------+--------------+ | 1 | 1211 | 3 | | 2 | 1412 | 3 | | 3 | 1510 | 4 | | 4 | 1511 | 4 | +--------+-------------+--------------+ 4 rows in set (0.00 sec)
Sau đây là truy vấn để sử dụng HAVING và GROUP BY và lấy UserThreaId với quy trình nhỏ hơn 1510 -
mysql> SELECT UserThreadId FROM WhereAfterGroupDemo GROUP BY UserThreadId HAVING MAX(UserProcess) < 1510;
Đầu ra
+--------------+ | UserThreadId | +--------------+ | 3 | +--------------+ 1 row in set (0.00 sec)