Tìm giá trị lớn nhất trong nhiều cột có thể NULL
Kết hợp COALESCE() (chuyển NULL thành 0) và GREATEST() (tìm max).
Tạo bảng và dữ liệu
mysql> create table DemoTable (
Value1 int,
Value2 int,
Value3 int
);
Query OK, 0 rows affected (0.61 sec)
mysql> insert into DemoTable values(NULL,80,76); mysql> insert into DemoTable values(NULL,NULL,100); mysql> insert into DemoTable values(56,NULL,45); mysql> insert into DemoTable values(56,120,90);
Truy vấn tìm max
mysql> select greatest(coalesce(Value1,0),coalesce(Value2,0),coalesce(Value3,0)) from DemoTable;
Kết quả
+--------------------------------------------------------------------+ | greatest(coalesce(Value1,0),coalesce(Value2,0),coalesce(Value3,0)) | +--------------------------------------------------------------------+ | 80 | | 100 | | 56 | | 120 | +--------------------------------------------------------------------+
Phân tích từng hàng:
NULL, 80, 76→0, 80, 76→ MAX = 80NULL, NULL, 100→0, 0, 100→ MAX = 10056, NULL, 45→56, 0, 45→ MAX = 5656, 120, 90→56, 120, 90→ MAX = 120
Mẹo: Nếu muốn bỏ qua NULL hoàn toàn (không coi là 0), hãy dùng GREATEST(Value1, Value2, Value3) nhưng kết quả sẽ là NULL nếu tất cả đều NULL.