-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
2번 문제
22.01.17 00:56 작성 조회수 127
0
select distinct(city)
from station
where left(city,1) <> 'a'
or left(city,1) <> 'e'
or left(city,1) <> 'i'
or left(city,1) <> 'o'
or left(city,1) <> 'u'
or right(city,1) <> 'a'
or right(city,1) <> 'e'
or right(city,1) <> 'i'
or right(city,1) <> 'o'
or right(city,1) <> 'u'
저는 이렇게 쿼리를 짰는데 틀린 답이라고 나옵니다. 왜 그런걸까요?
답변을 작성해보세요.
1
지식공유자 J
지식공유자2022.01.19
WHERE 절에 작성해 주신 첫 번째, 두 번째 조건의 의미를 하나씩 살펴 보면 다음과 같습니다.
1. LEFT(city, 1) <> 'a' : city의 첫 글자가 'a'가 아닌 것, 즉 'a'를 제외한 모든 알파벳으로 시작하는 city
2. LEFT(city, 1) <> 'e' : city의 첫 글자가 'e'가 아닌 것, 즉 'e'를 제외한 모든 알파벳으로 시작하는 city
이 두 조건을 OR로 묶으셨기 때문에 이 쿼리는 합집합을 출력합니다.
1번 조건으로 'a'로 시작하는 city를 제외했더라도 2번 조건에 'a'로 시작하는 city가 포함되고,
이 둘의 합집합이므로 결국 'a'로 시작하는 city 또한 결과 데이터로 나오게 됩니다.
전체 쿼리를 보면 10개 조건의 합집합, 결과적으로 station 테이블에 있는 모든 city명을 출력하게 됩니다.
답변 1