MySQL에서 최대 두 값을 얻는 방법은 무엇입니까?


290

시도했지만 실패했습니다.

mysql> select max(1,0);
오류 1064 (42000) : SQL 구문에 오류가 있습니다. 매뉴얼을 확인하십시오
올바른 구문을 사용하려면 MySQL 서버 버전에 해당합니다. 
1 호선 '0)'근처

답변:


528

사용 ) (GREATEST

예 :

SELECT GREATEST(2,1);

참고 : 당시 단일 값에 null이 포함되어 있으면이 함수는 항상 null을 반환합니다 (@ sanghavi7 사용자에게 감사합니다)


41
한 번에 단일 값에 null이 포함되어 있으면이 함수는 항상 null을 응답으로 반환한다는 점을 명심해야합니다.
sanghavi7

33
도 있습니다LEAST
bobobobo

1
GREATESTcirtain 열의 값을 얻을 수 있도록 하위 쿼리를 매개 변수로 실행하는 방법
Junaid Qadir

17
null 문제를 방지하기 위해 ifnull을 사용할 수 있습니다. 예를 들어 select greatest(date1, ifnull(date2, "0000-00-00 00.00:00")) from table1 where date2 is null;날짜 1을 알려드립니다.
Christoph Grimmer-Dietrich

1
일부 값이 null 일 수 있습니다.GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Sean the Bean

27

일련의 행에서 열의 최대 값을 얻으려면

SELECT MAX(column1) FROM table; -- expect one result

각 행에 대한 열, 리터럴 또는 변수 세트의 최대 값을 얻으려면 다음을 수행하십시오.

SELECT GREATEST(column1, 1, 0, @val) FROM table; -- expect many results

3
로 null 값을 확인하십시오 GREATEST. null 값은 함수가 null을 반환하게합니다. 이것을 막기 위해, 당신은 할 수 있습니다GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Sean the Bean

5

널 입력 가능 필드와 함께 GREATEST 함수를 사용할 수 있습니다 . 이 값 중 하나 (또는 ​​둘 다)가 NULL 일 수 있으면 사용하지 마십시오 (결과는 NULL 일 수 있음).

select 
    if(
        fieldA is NULL, 
        if(fieldB is NULL, NULL, fieldB), /* second NULL is default value */
        if(fieldB is NULL, field A, GREATEST(fieldA, fieldB))
    ) as maxValue

NULL을 원하는 기본값으로 변경할 수 있습니다 (두 값이 모두 NULL 인 경우).


1
이것이 내가 솔직히 MySQL을 싫어하는 이유입니다. 그렇게 간단한 일을하는 데 엄청난 양의 노력이 필요합니다.
Monica Heddneck

9
간단히로 대체 할 수 있습니다 select COALESCE(GREATEST(fieldA, fieldB),fieldA,fieldB) as maxValue. 너무 복잡하다
Kyborek

1
일부 값이 null 일 수 있습니다.GREATEST(COALESCE(column1, 0), COALESCE(column2, 0))
Sean the Bean
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.