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
'sourcetip' 카테고리의 다른 글
get_posts를 사용하여 X(ID)보다 큰 게시물을 가져오는 방법 (0) | 2023.09.15 |
---|---|
파워셸에서 regex backreference/match 값을 추출하는 방법은 무엇입니까? (0) | 2023.09.15 |
스프링 - 프로그래밍 방식으로 콩 세트 생성 (0) | 2023.09.15 |
MySQL보다 SQLite가 더 빠릅니까? (0) | 2023.09.15 |
몇 번 실행 후 쿼리가 매우 느립니다. (0) | 2023.09.15 |