집 >데이터 베이스 >MySQL 튜토리얼 >`base_price`가 0일 때 내 MySQL CASE WHEN 문이 잘못된 조건을 선택하는 이유는 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!