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

Lấy giá trị lớn nhất từ nhiều cột có NULL và không NULL trong MySQL

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:

  1. NULL, 80, 76 → 0, 80, 76 → MAX = 80
  2. NULL, NULL, 100 → 0, 0, 100 → MAX = 100
  3. 56, NULL, 45 → 56, 0, 45 → MAX = 56
  4. 56, 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.