https://programmers.co.kr/learn/courses/30/lessons/59046
1. 서론
설마 이렇게 푸는 거라고? 생각하게 되는 문제. 물론 이렇게 말고 다른 좋은 방법들도 많더라^^
2. 문제 풀이
ANIMAL_INS: 동물 보호소에 들어온 동물의 정보를 담은 테이블
테이블 구조
ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE
(각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부)
Q. 동물 보호소에 들어온 동물 중 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 아이디와 이름, 성별 및 중성화 여부를 조회하는 SQL 문을 작성해주세요. (결과는 아이디 순으로 조회)
이름이 하나도 아니고 저렇게 많은 걸 그냥 다 쓰라고? 이런 생각이 들었다. 그런데 딱히 다른 생각은 안 나서 정말로 where 문으로 name = "Lucy" or... 이런 식으로 했더니 정말로 됐다. 정답을 맞히고 나서 질문하기에 가보니 역시 더 깔끔한 방법이 나와 있었다.
바로 in을 쓰는 것. in은 특정 값 중에 값이 있는 것을 찾아준다. 이름 중에서 이런 이름들이 있는지를 in으로 표현하는 것이다.
3. 코드 설명
SELECT animal_id, name, sex_upon_intake
FROM animal_ins
WHERE name = 'Lucy' or name ='Ella' or name = 'Pickle' or name = 'Rogan' or name = 'Sabrina' or name = 'Mitty'
ORDER BY animal_id;
정말 노가다로 name을 하나씩 적어줬다. id순으로 정렬도 잊지 않았다.
SELECT animal_id, name, sex_upon_intake
FROM animal_ins
WHERE name in ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty')
ORDER BY animal_id;
in으로 정리하니까 훨씬 짧고 깔끔하고 직관적이다. 사실 서브 쿼리 말고 in을 써본 건 처음이라 어색 ^^;
MySQL에서는 ",' 혼용해도 상관없는데 Oracle에서는 무조건 '(작은 따옴표)만 된다!!!
'SQL' 카테고리의 다른 글
[ORACLE] 프로그래머스 중성화 여부 파악하기 (0) | 2021.05.27 |
---|---|
[ORACLE] 프로그래머스 이름에 el이 들어가는 동물 찾기 (0) | 2021.05.27 |
[SQLD] 과목 1. 데이터 모델링의 이해 2) 데이터 모델과 성능 (0) | 2021.03.18 |
[ORACLE] 프로그래머스 DATETIME에서 DATE로 형 변환 (+MySQL) (0) | 2021.03.14 |
[ORACLE] 프로그래머스 있었는데요 없었습니다 (0) | 2021.03.14 |