[SQL] WHERE 절에 조건을 표시하는 방식

프로그래머스 - 어린 동물 찾기

동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 
이때 결과는 아이디 순으로 조회해주세요.

조건을 쓰는 방식이 다양하게 있는데, 어떤 방식을 쓰느냐에 따라 효율이 갈릴 것 같아서 정리!

  1. '!=' 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
  1. 'NOT LIKE' 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged';
  1. 'NOT IN' 연산자 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT IN ('Aged')

위의 두 조건과는 다르게 다양한 데이터값을 넣을수 있어서 복수 조건이 필요할 때 좋을것 같다.

  1. 'NOT EXISTS' 사용
SELECT ins1.ANIMAL_ID, ins1.NAME
FROM ANIMAL_INS as ins1
WHERE NOT EXISTS (SELECT * FROM ANIMAL_INS AS ins2 WHERE ins1.INTAKE_CONDITION = 'Aged')

쓸데없이 번거롭게 풀기는 했지만, 다른 테이블의 서브쿼리에서 WHERE NOT EXISTS로 바로 표현 가능하다는게 매력적인 것 같다. 조건을 조금더 명료하게 보기 좋을것 같다.

# NOT LIKE로 풀기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged';

# NOT IN 으로 풀기(괄호안 조건 안되는걸 가져올수 있음)
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT IN ('Aged')

# != 으로도 풀기
SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'

좋은 웹페이지 즐겨찾기