SQL 프로그래머스 | 어린 동물 찾기 | 아닌 값 찾기(!= , <>사용) | NOT LIKE | EXISTS()와 NOT EXISTS | (NOT) IN 차이점

    728x90

     

    어린 동물 찾기

    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

     

    728x90

    댓글