Hàm MAX() trong MySQL
Trần Thị Vân
- 1174
- 14/08/2025
Chức năng của Hàm MAX() trong MySQL
Hàm MAX() trong MySQL được sử dụng để lấy ra giá trị lớn nhất trong một cột, hàm MAX() sẽ kết với với từ khóa AS để tạo bí danh cho một giá trị, giúp cho việc lấy dữ liệu tiện lợi hơn, hàm MAX() thường được dùng kết hợp với mệnh đề GROUP BY để lấy giá trị lớn nhất trong từng nhóm.
Code Hàm MAX() trong MySQL
select MAX(id) as soonline from tb_online;
select id_cha1,MAX(gia) as giacaonhat from tb_sanpham where hienthi=1 GROUP BY id_cha1;
<?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"');
// Lấy ID lớn nhất
echo "<b>Lấy ID lớn nhất</b><br>";
$sql ="select MAX(id) as soonline from tb_online";
$ketquamot = mysql_query($sql,$conn);
if(!$ketquamot){
die('Không thể lấy dữ liệu: ' . mysql_error());
}
$onlinect = mysql_fetch_array($ketquamot, MYSQL_ASSOC);
echo "Tổng truy cập: ".$onlinect['soonline']."<br>";
// MAX(gia) trong GROUP BY id_cha1
echo "<b>MAX(gia) trong GROUP BY id_cha1</b><br>";
$sql ="select id_cha1,MAX(gia) as giacaonhat from tb_sanpham where hienthi=1 GROUP BY id_cha1";
$ketquahai = mysql_query($sql,$conn);
if(!$ketquahai){
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($ketquahai, MYSQL_ASSOC)){
echo "ID Cha cấp một: {$row['id_cha1']} <br> ".
"Giá cao nhất: ".number_format($row['giacaonhat'],0,"",".")." <br> ".
"--------------------------------<br>";
}
// Đóng kết nối database
mysql_close($conn);
?>
Kết quả:
Lấy ID lớn nhất
Tổng truy cập: 3
MAX(gia) trong GROUP BY id_cha1
ID Cha cấp một: 1
Giá cao nhất: 55.000.000
--------------------------------
ID Cha cấp một: 2
Giá cao nhất: 3.400.000
--------------------------------
Lấy dữ liệu của dòng có giá trị lớn nhất trong MySQL
Hàm MAX() giúp tìm ra giá trị lớn nhất trong một cột, nhưng kết quả trả về chỉ là giá trị đó chứ không tự động cung cấp toàn bộ thông tin của dòng tương ứng. Khi cần lấy thêm tên, mã hoặc các dữ liệu khác của dòng có giá trị lớn nhất, có thể kết hợp MAX() với truy vấn con hoặc JOIN.
Lấy dòng có giá trị lớn nhất bằng MAX() và truy vấn con
Truy vấn con là cách dễ hiểu để tìm toàn bộ dòng có giá trị bằng kết quả lớn nhất. Trước tiên, MAX() xác định giá trị cao nhất, sau đó truy vấn bên ngoài lấy những dòng có giá trị đúng bằng kết quả đó.
SELECT *
FROM san_pham
WHERE gia = (
SELECT MAX(gia)
FROM san_pham
);
Ví dụ trên sẽ lấy toàn bộ thông tin sản phẩm có gia cao nhất. Nếu có nhiều sản phẩm cùng mức giá lớn nhất, tất cả các dòng phù hợp đều được trả về.
Cách này phù hợp khi mục tiêu là lấy trực tiếp dòng dữ liệu tương ứng với giá trị lớn nhất mà không cần xử lý thêm nhiều bước.
Lấy đầy đủ dữ liệu với MAX() và JOIN
Có thể dùng JOIN để kết hợp bảng dữ liệu với kết quả do MAX() tạo ra. Cách này đặc biệt hữu ích khi truy vấn cần mở rộng thêm điều kiện hoặc kết hợp với các bảng khác.
SELECT sp.*
FROM san_pham AS sp
JOIN (
SELECT MAX(gia) AS gia_lon_nhat
FROM san_pham
) AS m
ON sp.gia = m.gia_lon_nhat;
Phần truy vấn bên trong tìm ra giá trị lớn nhất và đặt tên là gia_lon_nhat. Sau đó, JOIN đối chiếu giá của từng sản phẩm với giá trị này để lấy đầy đủ thông tin của dòng phù hợp.
Nếu có nhiều dòng cùng đạt giá trị cao nhất, phương pháp này cũng có thể trả về toàn bộ các dòng đó. Đây là điểm cần lưu ý khi muốn lấy một dòng duy nhất thay vì tất cả dòng đồng hạng.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Hàm MAX() trong MySQL.
Tải file database .sql về nếu muốn kiểm tra hoặc thực hành Tải về.
- 0 Bình luận
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 *