Mệnh đề HAVING trong SQL cho phép bạn chỉ định điều kiện lọc mà kết quả nhóm xuất hiện trong kết quả.
Mệnh đề WHERE đặt các điều kiện vào các cột đã chọn, trong khi mệnh đề HAVING đặt các điều kiện vào các nhóm được tạo bởi mệnh đề GROUP BY.
Cú pháp
Các Mã lệnh sau đây cho thấy vị trí của khoản HAVING trong một truy vấn.
FROM WHERE GROUP BY HAVING ORDER BY
Mệnh đề HAVING phải tuân theo mệnh đề GROUP BY trong truy vấn và cũng phải trước mệnh đề ORDER BY nếu sử dụng. Mã lệnh sau đây có cú pháp của câu lệnh SELECT bao gồm mệnh đề HAVING:
SELECT column1, column2 FROM table1, table2 WHERE [ conditions ] GROUP BY column1, column2 HAVING [ conditions ] ORDER BY column1, column2
Ví dụ
Giả sử bảng CUSTOMERS có các bản ghi sau.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+
Sau đây là một ví dụ, sẽ hiển thị một bản ghi cho một độ tuổi tương tự sẽ lớn hơn hoặc bằng 2.
SELECT ID, NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY age HAVING COUNT(age) >= 2;
Điều này sẽ tạo ra kết quả sau:
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 2 | Van Ha | 25 | Ha Noi | 1500.00 | +----+----------+-----+-----------+----------+