두 필드에서 가장 큰 가치를 얻어야합니다.
SELECT MAX(field1), MAX(field2)
이제이 두 가지에서 어떻게 가장 큰 가치를 얻을 수 있습니까?
답변:
다음 GREATEST()
기능 을 사용할 수 있습니다 .
SELECT GREATEST(field1, field2);
모든 행에서 절대 최대 값을 얻으려면 다음을 사용할 수 있습니다.
SELECT GREATEST(MAX(field1), MAX(field2));
예 1 :
SELECT GREATEST(1, 2);
+----------------+
| GREATEST(1, 2) |
+----------------+
| 2 |
+----------------+
1 row in set (0.00 sec)
예 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))
작동합니다. 다른 잘못된 번호가 반환 됨 (가장 크지 않음)
SELECT GREATEST(MAX(field1), MAX(field2));
모든 행에서 절대 최대 값을 가져와야 합니다. 사용 SELECT GREATEST(field1, field2);
하면 각 행에 대해 field1과 field2 사이의 최대 값을 가진 결과 집합이 반환됩니다.
각 행에 대해 GREATEST ()를 선택하는 경우
SELECT GREATEST(field1, field2)
필드 중 하나가 NULL 이면 NULL 을 반환 합니다. IFNULL을 사용하여이 문제를 해결할 수 있습니다.
SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))
IFNULL
비교할 필드가 24 개있는 경우에도 모든 작업을 수행해야합니다 .
SELECT max( CASE
WHEN field1 > field2 THEN field1
ELSE field2
END ) as biggestvalue
FROM YourTable;
MIN / MAX와 함께 GREATEST / LEAST 사용
GREATEST / LEAST : 다양한 열에서 최대 또는 최소 값을 찾으려고 할 때 열과 함께 사용됩니다.
최소 최대 : 다양한 행에서 최대 또는 최소 값을 찾으려고 할 때 행과 함께 사용됩니다.
예시 표 :
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()
가장 큰 것과 비슷하게LEAST()
가장 작은 것입니다.