[프로그래머스] SQL/오답 노트

[lv2] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기

SH3542 2024. 10. 5. 21:03

 

https://school.programmers.co.kr/learn/courses/30/lessons/151137

SELECT CAR_TYPE, COUNT(CAR_TYPE) CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' OR '%열선시트%' OR '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

 

해당 식은 OR절 이후를 조건 컬럼 OPTIONS와 비교하는 것이 아닌, 문자열 자체로 평가 됨

MySQL에서 %열선시트%, %가죽시트% 문자열은 각각 FALSE(1)로 치환되므로,

 

=> WHERE OPTIONS LIKE '%통풍시트%' OR 1 OR 1

=> WHERE OPTIONS LIKE '%통풍시트%'

식과 같아짐

 

 

수정 1. LIKE

SELECT CAR_TYPE, COUNT(CAR_TYPE) CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%통풍시트%' OR OPTIONS LIKE '%열선시트%' OR OPTIONS LIKE '%가죽시트%'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE

 

수정 2. 정규식

SELECT CAR_TYPE, COUNT(CAR_TYPE) CARS
FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS REGEXP '통풍시트|열선시트|가죽시트'
GROUP BY CAR_TYPE
ORDER BY CAR_TYPE