Tôi cần nhận giá trị lớn nhất từ hai trường:
SELECT MAX(field1), MAX(field2)
Bây giờ, làm thế nào tôi có thể nhận được giá trị lớn nhất từ hai thứ này?
Câu trả lời:
Bạn có thể muốn sử dụng GREATEST()
chức năng:
SELECT GREATEST(field1, field2);
Nếu bạn muốn nhận được giá trị tối đa tuyệt đối từ tất cả các hàng, thì bạn có thể sử dụng như sau:
SELECT GREATEST(MAX(field1), MAX(field2));
Ví dụ 1:
SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
Ví dụ 2:
CREATE TABLE a (a int, b int);
INSERT INTO a VALUES (1, 1);
INSERT INTO a VALUES (2, 1);
INSERT INTO a VALUES (3, 1);
INSERT INTO a VALUES (1, 2);
INSERT INTO a VALUES (1, 4);
SELECT GREATEST(MAX(a), MAX(b)) FROM a;
+--------------------------+
| GREATEST(MAX(a), MAX(b)) |
+--------------------------+
| 4 |
+--------------------------+
1 row in set (0.02 sec)
GREATEST(MAX(field1), MAX(field2))
là hoạt động. Số sai khác được trả lại (không phải lớn nhất)
SELECT GREATEST(MAX(field1), MAX(field2));
nhận được mức tối đa tuyệt đối từ tất cả các hàng. Nếu bạn sử dụng, SELECT GREATEST(field1, field2);
bạn sẽ nhận được tập hợp kết quả có giá trị tối đa giữa field1 và field2 cho mỗi hàng.
Trong trường hợp bạn đang chọn GREATEST () cho mỗi hàng
SELECT GREATEST(field1, field2)
Nó sẽ trả về NULL nếu một trong các trường là NULL. Bạn có thể sử dụng IFNULL để giải quyết vấn đề này
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
IFNULL
ngay cả khi bạn có hai chục trường để so sánh!
SELECT max( CASE
WHEN field1 > field2 THEN field1
ELSE field2
END ) as biggestvalue
FROM YourTable;
Sử dụng GREATEST / LEAST với MIN / MAX
GREATEST / LEAST : được sử dụng với các cột, khi bạn muốn tìm giá trị tối đa hoặc tối thiểu từ các cột khác nhau.
MIN / MAX : được sử dụng với các hàng, khi bạn muốn tìm giá trị tối đa hoặc tối thiểu từ các hàng khác nhau:
Bảng ví dụ:
SELECT GREATEST(col_a, col_b, col_c) FROM temp;
SELECT MIN(GREATEST(col_a, col_b, col_c)) FROM temp; # 3 as output
SELECT MAX(GREATEST(col_a, col_b, col_c)) FROM temp; # 9 as output
SELECT LEAST(col_a, col_b, col_c) FROM temp;
SELECT MIN(LEAST(col_a, col_b, col_c)) FROM temp; # 1 as output
SELECT MAX(LEAST(col_a, col_b, col_c)) FROM temp; # 7 as output
GREATEST()
đối với lớn nhất tương tựLEAST()
đối với nhỏ nhất.