Lấy giá trị lớn nhất (MAX) của cột trong MySQL
Sử dụng hàm tổng hợp MAX() để tìm giá trị lớn nhất của một cột (thường là cột ID tự động tăng).
Cú pháp
SELECT MAX(ten_cot) AS ten_alias FROM ten_bang;
Ví dụ minh họa
Tạo bảng DemoTable710:
mysql> CREATE TABLE DemoTable710 (Id INT); Query OK, 0 rows affected (0.53 sec)
Chèn dữ liệu:
mysql> INSERT INTO DemoTable710 VALUES(1001); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable710 VALUES(2001); Query OK, 1 row affected (0.15 sec) mysql> INSERT INTO DemoTable710 VALUES(1998); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable710 VALUES(1789); Query OK, 1 row affected (0.11 sec) mysql> INSERT INTO DemoTable710 VALUES(1678); Query OK, 1 row affected (0.18 sec) mysql> INSERT INTO DemoTable710 VALUES(9087); Query OK, 1 row affected (0.14 sec) mysql> INSERT INTO DemoTable710 VALUES(1908); Query OK, 1 row affected (0.17 sec)
Xem tất cả bản ghi:
mysql> SELECT * FROM DemoTable710;
+------+ | Id | +------+ | 1001 | | 2001 | | 1998 | | 1789 | | 1678 | | 9087 | | 1908 | +------+ 7 rows in set (0.00 sec)
Truy vấn lấy MAX(Id):
mysql> SELECT MAX(Id) AS Max_Id FROM DemoTable710;
Kết quả:
+--------+ | Max_Id | +--------+ | 9087 | +--------+ 1 row in set (0.00 sec)
Các trường hợp sử dụng phổ biến
- Lấy ID mới nhất:
SELECT MAX(id) FROM users;(giả sử id là AUTO_INCREMENT) - Kết hợp GROUP BY:
SELECT category_id, MAX(price) FROM products GROUP BY category_id; - Lấy toàn bộ hàng có giá trị MAX:
SELECT * FROM DemoTable710 WHERE Id = (SELECT MAX(Id) FROM DemoTable710);
- Hàm ngược lại:
MIN()để lấy giá trị nhỏ nhất
Hiệu suất
Nếu cột có index (PRIMARY KEY, UNIQUE, INDEX), MAX() thực hiện rất nhanh (O(1) hoặc O(log n)) vì MySQL chỉ cần đọc node cuối cùng của B-tree index.