Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm giá trị lớn nhất trong 3 cột MySQL dùng GREATEST()

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.