sourcetip

MySQL - 0이 아닌 MIN 찾기

fileupload 2023. 9. 15. 21:17
반응형

MySQL - 0이 아닌 MIN 찾기

MySQL에서 열의 최소 값을 가져오는 중입니다.MIN기능.그러나 MySQL에 0값을 무시하라고 말하는 것이 가능합니까?문제는 제가 보관하고 있다는 것입니다.0대신 기본값으로NULL당분간은tinyint기둥.제가 원하는 것은 0보다 큰 최소값을 구하는 것입니다.

SELECT a.baseloc_id, 
a.baseloc_latitude, 
a.baseloc_longitude, 
a.baseloc_distance, 
MIN(b.basecost_ton2_cost) as minTon2, 
MIN(b.basecost_ton3_cost) as minTon3, 
MIN(b.basecost_ton10_cost) as minTon10 
FROM bbox_logi_base_locations a 
LEFT JOIN bbox_logi_base_cost b 
    USING (baseloc_id) 
GROUP BY a.baseloc_id;

도와주셔서 감사합니다.

편집 01:

제가 이 얘기를 잊어서 죄송합니다. 그.bbox_logi_base_cost테이블에는 조각난 값을 포함하는 행이 있습니다.예를 들어, 하나의 행은 다음을 가질 수 있습니다.basecost_ton2_cost~하듯이0값으로 채워진 다른 열.그리고 다른 행은 하나를 제외한 모든 열을 가질 수 있습니다.0. 따라서 a를 사용하여 어떤 행도 필터링할 수 없습니다.WHERE조건.

사용 방법:

MIN(NULLIF(value, 0))

당신에게 맞는 정답은 다음과 같습니다.

IFNULL(MIN(NULLIF(value, 0)), 0)

하는 동안에ISNULL작동하지 않는

이 방법을 기억하는 데 도움이 되는 간단한 메모.

문제는 값 집합에서 가장 작은 값을 선택하려는 경우입니다.

논리적 그룹에 속한 제품 표가 있고 해당 그룹에서 가장 낮은 가격의 제품을 선택하려고 하지만 실제로는 (어떤 이유로든) 0.00의 가격을 가진 제품도 있습니다.실제로 0.00을 이 제품군의 최저 가격으로 표시하지 않고, 0보다 큰 최저 가격을 표시하려고 합니다.

MySQL은 이를 위한 깔끔한 방법을 가지고 있습니다.간단히 이동:

SELECT tableref.group_id, MIN(NULLIF(tableref.column, 0)) as min_price FROM tableref GROUP BY tableref.group_id;

마법은 NULLIF 기능에 있으며 tableref.column이 0인 경우 null을 반환합니다.null을 반환하면 해당 값이 MIN에 의해 포함에서 제거되므로 열 값이 0보다 커지게 됩니다.

#MySQL #데이터베이스

언급URL : https://stackoverflow.com/questions/2099720/mysql-find-min-but-not-zero

반응형