기본적으로 현재 강의로써 배우고 있는 SQL의 강의중 LIKE 파트에 관한 내용이 있었다.
#1 테이블 내용
+----+--------+------------+------+------+------------------+------------------+
| id | name | birthday | age | sex | job_title | agency |
+----+--------+------------+------+------+------------------+------------------+
| 1 | 아이유 | 1993-05-16 | 29 | F | 가수, 탤런트 | EDAM엔터테인먼트 |
| 2 | 이미주 | 1994-09-23 | 28 | F | 가수 | 울림엔터테인먼트 |
| 3 | 송강 | 1994-04-23 | 28 | M | 탤런트 | 나무엑터스 |
| 4 | 강동원 | 1981-01-18 | 41 | M | 영화배우, 탤런트 | YG엔터테인먼트 |
| 5 | 유재석 | 1972-08-14 | 50 | M | MC, 개그맨 | 안테나 |
| 6 | 차승원 | 1970-06-07 | 48 | M | 영화배우, 모델 | YG엔터테인먼트 |
| 7 | 이수현 | 1999-05-04 | 23 | F | 가수 | YG엔터테인먼트 |
+----+--------+------------+------+------+------------------+------------------+
#2 문제
아이유, 이미주, 송강, 이수현 중에서 직업이 가수만 있거나
가수를 하지 않는 탤런트를 찾는다. 라는 조건으로써 찾고자 했다.
일단 이 4명중 답이 나와야 했기 때문에 최대가 4명이 나와야 했다.
#3 시도 - 실패
select* from celeb where
-> name in ('아이유', '이미주', '송강','이수현') and
-> (job_title = '가수' or (job_title !='가수' and job_title like '%탤런트%'));
이렇게 LIKE문으로써가 아니라 = 이나 != 같은 파이썬 기본연산으로 써줬다. 그랬더니 결과값으로 4명 모두가 나왔다.
#4 원인분석
구글링을 UPDATE 배울때 해보니, 나오는 내용중에 '%%'와 같은 내용은 LIKE 와 함께 쓰이는 거라고 하더라.
100% 신뢰하기엔 잘 모르겠지만, 어쨌든 신뢰도가 매우 높다.
때문에 %% 연산등은 LIKE가 아닌 =같은 연산과는 작동이 안되는 궁합이였던 것같다.
#5 결과 도출
select* from celeb where
-> name in ('아이유', '이미주', '송강', '이수현') and
-> (job_title ='가수' or (job_title not like '%가수%' and job_title like '%탤런트%'));
결국 이렇게 LIKE 문으로 수정을 해주고나서 비로소 값을 얻을 수 있었다.
'개발일지 > 임시카테고리' 카테고리의 다른 글
SQL JOIN 후기1 (0) | 2022.06.27 |
---|---|
SQL union, union all (0) | 2022.06.27 |
SQL 활용기초2 UPDATE로 테이블 안의 컬럼 값을 변경 (0) | 2022.06.25 |
SQL 활용기초1 (0) | 2022.06.25 |
SQL 2개이상의 값에서 1개만 값이 포함되도 True를 반환해 줄 수 있는 기능기초 (0) | 2022.06.25 |