Hàm GREATEST()
SELECT GREATEST(cot1, cot2, cot3) AS ten_alias FROM bang;
- Trả về giá trị lớn nhất trong danh sách
- Bỏ qua NULL (nếu tất cả NULL → trả về NULL)
- Hỗ trợ mọi kiểu so sánh được (số, chuỗi, ngày)
Ví dụ: 3 cột số
Dữ liệu
+-------+--------+-------+ | First | Second | Third | +-------+--------+-------+ | 30 | 90 | 60 | | 100 | 40 | 50 | | 101 | 290 | 150 | +-------+--------+-------+
Truy vấn
mysql> SELECT GREATEST(First, Second, Third) AS MAXValueOfThreeColumns
-> FROM MaxOfThreeColumnsDemo;
Kết quả
+------------------------+ | MAXValueOfThreeColumns | +------------------------+ | 90 | | 100 | | 290 | +------------------------+
Hàm đối ứng: LEAST()
SELECT LEAST(First, Second, Third) AS MinValue FROM bang;
Xử lý NULL
-- GREATEST(10, NULL, 20) → NULL (vì có NULL) -- Cách khắc phục: COALESCE SELECT GREATEST(COALESCE(cot1,0), COALESCE(cot2,0), COALESCE(cot3,0)) FROM bang;
So sánh chuỗi
SELECT GREATEST('apple', 'banana', 'cherry'); -- 'cherry' (theo thứ tự alphabet)
Ứng dụng thực tế
- Tìm điểm cao nhất trong nhiều môn
- Tìm ngày mới nhất từ nhiều cột ngày
- Tính max giá trị từ nhiều nguồn
- Logic nghiệp vụ: ngưỡng cao nhất
Lưu ý: GREATEST/LEAST không phải aggregate function - hoạt động theo hàng (row-wise), không theo nhóm.