Trần Ngọc Thanh
- 30
- 15/08/2025
Mệnh đề HAVING trong MySQL được sử dụng như mệnh đề WHERE nhưng nó chỉ dùng cho GROUP BY, đặt điều kiện cho các nhóm đã GROUP BY, chi tiết như nào hãy cùng chúng tôi phân tích:
Mệnh đề HAVING trong MySQL
Chức năng của Mệnh đề HAVING trong MySQL
Mệnh đề HAVING trong MySQL được sử dụng như mệnh đề WHERE nhưng nó chỉ dùng cho GROUP BY, đặt điều kiện cho các nhóm đã GROUP BY, trong mệnh đề HAVING kết hợp được các toán tử AND, OR,... như trong mệnh đề WHERE.
Code Mệnh đề HAVING trong MySQL
<?php
$dbhost = 'localhost';
$dbuser = 'webmoi_userdata'; // Tên username
$dbpass = 'xgZwEfQWE'; // Mật khẩu
// Kết nối đến tên username
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('Không kết nối được: ' . mysql_error());
}
// Chọn tên database
mysql_select_db('webmoi_tendata');
// Xét kiểu tiếng việt
mysql_query('SET NAMES "utf8"');
// GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000
echo "<b>GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000</b><br>";
$sql ="select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2 HAVING tonggia<90000000";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquamot, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"ID Cha cấp hai: {$row['id_cha2']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
"Giá trung bình : ".number_format($row['giatrungbinh'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000 and tonggia>8000000
echo "<b>GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000 and tonggia>8000000 </b><br>";
$sql ="select id_cha2,id_cha1,MAX(gia) as giacaonhat, SUM(gia) as tonggia, AVG(gia) as giatrungbinh from tb_sanpham where hienthi=1 GROUP BY id_cha1,id_cha2 HAVING tonggia<90000000 and tonggia>8000000";
$ketquaba = mysql_query($sql,$conn);
if(!$ketquaba){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
// Dùng vòng lặp để lấy ra từng hàng trong bảng
while($row = mysql_fetch_array($ketquaba, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"ID Cha cấp hai: {$row['id_cha2']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"Tổng giá: ".number_format($row['tonggia'],0,"",".")." <br> ".
"Giá trung bình : ".number_format($row['giatrungbinh'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000
ID Cha cấp một: 1
ID Cha cấp hai: 5
Giá cao nhất: 30.000.000
Tổng giá: 55.000.000
Giá trung bình : 27.500.000
--------------------------------
ID Cha cấp một: 2
ID Cha cấp hai: 6
Giá cao nhất: 3.400.000
Tổng giá: 6.100.000
Giá trung bình : 3.050.000
--------------------------------
GROUP BY id_cha1,id_cha2, HAVING tonggia<90000000 and tonggia>8000000
ID Cha cấp một: 1
ID Cha cấp hai: 5
Giá cao nhất: 30.000.000
Tổng giá: 55.000.000
Giá trung bình : 27.500.000
--------------------------------
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Mệnh đề HAVING trong MySQL.
- 0 Bình luận

Trần Ngọc Thanh
Content Trần Ngọc Thanh là người viết content có kinh nghiệm nhiều năm tại Web Mới, chuyên viết content bên lĩnh vực website và nhiều lĩnh vực khác
Chia sẻ nội dung đánh giá của bạn về Mệnh đề HAVING trong MySQL
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Bình luận, Hỏi đáp
Đăng ký tư vấn miễn phí
Tìm hiểu 1 năm không bằng lắng nghe 1 câu tư vấn