어린 동물 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/59037
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요.
이때 결과는 아이디 순으로 조회해주세요.
▼ ! = 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
(참고) INTAKE_CONDITION 컬럼에는 각 동물의 상태가 적혀 있는데 나이 들은 동물은 'Aged' 라고 표기함
WHERE절에서 동물의 상태가 'Aged'인 경우를 제외(!=)하도록 해서
'젊은' 동물만 조회되도록 함
!= 'Aged'의 의미는 나이 든 동물이 아닌 경우를 의미함
이와 같은 기능을 가진 것 중에 <> 이런 것도 있음
▼ NOT LIKE 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged'
ORDER BY ANIMAL_ID
어떠 분은 NOT LIKE를 사용해서 푸심
LIKE ' '는 내가 찾고 있는 값이 포함된 값을 조회해주지만
NOT LIKE ' '는 해당 값이 포함되지 않은 값을 조회해줌
▼ NOT EXIST(서브쿼리)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS a
WHERE NOT EXISTS(
SELECT 'x'
FROM ANIMAL_INS b
WHERE a.INTAKE_CONDITION = 'Aged')
ORDER BY 1
이걸 NOT EXISTS(서브쿼리)로 푸신 분도 계셨음
그런데 저 서브쿼리에 SELECT 'x'는 왜 넣어주신 걸까..??
(이거 혹시 아시는 분은 댓글로 설명 좀 부탁드려요,,ㅠ)
일단 EXIST, NOT EXIST 개념도 잘 몰라서 찾아봄
EXIST()와 NOT EXIST()는 서브쿼리와 함께 쓰인다고 함
EXISTS()의 경우
괄호 안의 서브쿼리 값이 True일 때(값이 존재할 때) 메인 쿼리를 조회하는 것이고,
NOT EXISTS()의 경우에는 반대로
괄호 안의 서브쿼리 값이 False일 때(값이 존재하지 않을 때) 메인쿼리를 조회하게 됨
[참고 게시글]
EXISTS와 NOT EXISTS 사용법이 궁금하신 분은 클릭!
https://rgy1989.tistory.com/entry/SQL-EXIST-NOT-EXIST
SQL :: EXIST , NOT EXIST
1. EXIST SELECT FROM WHERE EXIST ( SELECT 1 ... FROM ... WHERE....) - EXIST안의 조건이 "존재" 해야만 전체 결과를 출력해라 라는 의미!!!!!!!!!!!!!!!!!!!!!!!! EX) SELECT 조건1, 조건2... FROM table_Name WHERE EXIST ( SELECT ... FROM
rgy1989.tistory.com
[참고 게시글]
(NOT) IN과의 차이도 궁금한 분은 클릭!
https://choihyuunmin.tistory.com/93
[SQL] (NOT)EXISTS 와 (NOT)IN 비교하기
최근 작업하고 있는 모듈에서 A 테이블과 B 테이블을 비교하여 B 테이블에 없는 값을 A 테이블에서 가져오는 작업을 진행하고 있다. 처음에는 NOT IN 구문을 사용하여 비교하고 가져오고 있었는데,
choihyuunmin.tistory.com
댓글