Dùng MAX() kết hợp GROUP BY để lấy giá trị lớn nhất cho mỗi nhóm. Tạo bảng:
mysql> CREATE TABLE DemoTable (
StudentName VARCHAR(40),
StudentMarks INT
); Query OK, 0 rows affected (0.64 sec)
Chèn dữ liệu (John và Chris trùng tên, điểm khác nhau):
mysql> INSERT INTO DemoTable VALUES('John',78); Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',48); Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('John',67); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('Chris',89); Query OK, 1 row affected (0.15 sec)
Hiển thị dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | John | 78 | | Chris | 48 | | John | 67 | | Chris | 89 | +-------------+--------------+ 4 rows in set (0.00 sec)
Truy vấn lấy điểm cao nhất của mỗi sinh viên:
mysql> SELECT StudentName, MAX(StudentMarks) AS StudentMarks FROM DemoTable GROUP BY StudentName;
Kết quả:
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | John | 78 | | Chris | 89 | +-------------+--------------+ 2 rows in set (0.00 sec)
Giải thích: GROUP BY StudentName gom nhóm theo tên, MAX() lấy điểm lớn nhất trong mỗi nhóm.