>데이터 베이스 >MySQL 튜토리얼 >`base_price`가 0일 때 내 MySQL CASE WHEN 문이 잘못된 조건을 선택하는 이유는 무엇입니까?

`base_price`가 0일 때 내 MySQL CASE WHEN 문이 잘못된 조건을 선택하는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-25 02:02:09907검색

Why Does My MySQL CASE WHEN Statement Choose the Wrong Condition When `base_price` is 0?

MySQL에서 CASE..WHEN 문을 올바르게 사용하기

MySQL에서 CASE..WHEN 문을 사용하면 다양한 조건을 평가하고 각 조건에 따라 특정 결과를 반환합니다. 하지만 예상치 못한 결과를 피하기 위해서는 올바르게 사용하는 것이 중요합니다.

질문:

base_price가 0인 레코드를 가져오기 위해 CASE..WHEN 문을 실행할 때, 지정된 값이 있음에도 불구하고 첫 번째 조건 대신 값이 3인 조건이 선택되는 이유는 무엇입니까? 0?

정답:

문제는 CASE 문의 구문에 있습니다. 제공된 쿼리에서

SELECT
   CASE course_enrollment_settings.base_price
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    WHEN course_enrollment_settings.base_price < 101      THEN 2
    WHEN course_enrollment_settings.base_price > 100 AND
                      course_enrollment_settings.base_price < 201 THEN 3
        ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0

문은 조건을 평가하고 일치하는 첫 번째 조건을 반환합니다. 그러나 CASE 문 바로 뒤에 컬럼 이름course_enrollment_settings.base_price가 반복되므로 구문이 올바르지 않습니다. 이로 인해 문이 자체 결과를 나머지 조건과 비교하게 되어 항상 3개의 조건이 선택됩니다.

문제를 해결하려면 해당 지점에서 열 이름을 제거하세요.

SELECT
   CASE
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    END

이제 CASE 문은 불필요한 반복 없이 조건을 올바르게 평가하여 예상한 결과를 보장합니다.

위 내용은 `base_price`가 0일 때 내 MySQL CASE WHEN 문이 잘못된 조건을 선택하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.