두 개 이상의 필드에서 가장 큰 값


84

두 필드에서 가장 큰 가치를 얻어야합니다.

SELECT MAX(field1), MAX(field2)

이제이 두 가지에서 어떻게 가장 큰 가치를 얻을 수 있습니까?


8
GREATEST()가장 큰 것과 비슷하게 LEAST()가장 작은 것입니다.
James Oravec

답변:


170

다음 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))작동합니다. 다른 잘못된 번호가 반환 됨 (가장 크지 않음)
Qiao

1
@Qiao : 예, SELECT GREATEST(MAX(field1), MAX(field2));모든 행에서 절대 최대 값을 가져와야 합니다. 사용 SELECT GREATEST(field1, field2);하면 각 행에 대해 field1과 field2 사이의 최대 값을 가진 결과 집합이 반환됩니다.
Daniel Vassallo

그게 내가이하는 기능이 있는지되었다 위해 내가 찾고 있었던,하지만 난이 이름의 실마리가 없다, 지금은 :) 완벽한 이해를 만드는거야
에밀 Borconi

40

각 행에 대해 GREATEST ()를 선택하는 경우

SELECT GREATEST(field1, field2)

필드 중 하나가 NULL 이면 NULL 을 반환 합니다. IFNULL을 사용하여이 문제를 해결할 수 있습니다.

SELECT GREATEST(IFNULL(field1, 0), IFNULL(field2, 0))

예, IFNULL비교할 필드가 24 개있는 경우에도 모든 작업을 수행해야합니다 .
Ifedi Okonkwo

6
mysql> SELECT GREATEST(2,0);
        -> 2

그래서 시도해보십시오.

mysql> SELECT GREATEST(MAX(field1), MAX(field2));

1
SELECT max( CASE
                WHEN field1 > field2 THEN field1
                ELSE field2
            END ) as biggestvalue 
FROM YourTable;

이 솔루션은 100 개의 열이있을 때 실행 가능하지 않습니다.
Deepak

1
@Deepak, 좋습니다.하지만 10 년 전에 "GREATEST"또는 "LEAST"함수 호출을 몰랐을 때의 답변이지만 원래 게시물은 약 2 개의 열을 물었고 100 개의 열이있는 테이블이있는 경우 상황이 비슷하다면 재고해야 할 심각한 데이터베이스 디자인 문제가 있습니다.
DRapp

예, 설명해 주셔서 감사합니다. 이제 귀하의 의견은 언제 무엇을 사용 해야하는지 다른 사람들에게 도움이 될 것입니다.
Deepak

0

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.