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

Sắp xếp theo giá trị lớn nhất từ 2 cột trong MySQL với GREATEST()

Giới thiệu

Hàm GREATEST(val1, val2, ...) trả về giá trị lớn nhất trong danh sách. Dùng trong ORDER BY GREATEST(col1, col2) DESC để sắp xếp hàng theo giá trị lớn hơn của 2 cột.

Ví dụ thực hành

1. Tạo bảng DemoTable834

mysql> CREATE TABLE DemoTable834 (Value1 INT, Value2 INT);

2. Chèn dữ liệu

mysql> INSERT INTO DemoTable834 VALUES (10,20),(40,50),(20,24),(30,10);

3. Sắp xếp theo MAX(Value1, Value2) giảm dần

mysql> SELECT * FROM DemoTable834 ORDER BY GREATEST(Value1, Value2) DESC;

4. Kết quả

+--------+--------+
| Value1 | Value2 |
+--------+--------+
|     40 |     50 |  -- GREATEST=50
|     30 |     10 |  -- GREATEST=30
|     20 |     24 |  -- GREATEST=24
|     10 |     20 |  -- GREATEST=20
+--------+--------+

Hàm đối偶: LEAST()

-- Sắp xếp theo giá trị NHỎ NHẤT của 2 cột
SELECT * FROM DemoTable834 ORDER BY LEAST(Value1, Value2) DESC;

Lưu ý về NULL

  • GREATEST(10, NULL) = NULL.
  • Nếu cột có thể NULL: GREATEST(COALESCE(Value1,0), COALESCE(Value2,0)).

Mở rộng: Sắp xếp theo tổng / hiệu / tích

ORDER BY (Value1 + Value2) DESC;      -- Tổng
ORDER BY (Value1 - Value2) DESC;      -- Hiệu
ORDER BY (Value1 * Value2) DESC;      -- Tích

Hiệu suất

  • GREATEST không dùng index trên (Value1, Value2).
  • Nếu truy vấn thường xuyên: tạo generated column greatest_val = GREATEST(Value1, Value2) + index.
  • Hoặc materialized view / summary table.