[HOW]SQL 조건 중 IN (A, B, C, ...) 사용하는 방법
안녕하세요. 신기한 연구소입니다.
특정 컬럼에 대해 몇 가지 값을 가지고 조건을 사용하고 싶은 경우가 있습니다.
그런 경우 사용할 수 있는 키워드는 바로 IN입니다.
예를 들어보겠습니다.
사원 정보에서 JOB 컬럼의 조건을 사용합니다.
JOB이 ‘SALESMAN’ 과 ‘CLERK’를 조건으로 조회하고 싶은 경우 아래와 같이 작성합니다.
JOB의 조건이 더 필요하다면 OR문을 더 붙여서 사용해도 되지만
쿼리 문도 길어지고 반복된 문장을 계속 사용하게 됩니다.
이런 경우 IN을 사용할 수 있습니다.
IN을 사용하니 조건이 깔끔하게 변했습니다.
또한 콤마(,)를 사용해서 값만 추가하면 되기에 가독성도 좋아지고 편하게 추가할 수 있습니다.
사실 IN은 내부적으로 OR를 사용한다고 합니다.
사용자 편의를 위해 만든 키워드라 생각되네요.
IN 조건에서 부정형으로 사용하려면 NOT을 붙이면 됩니다.
NOT의 위치는 ‘NOT 컬럼 IN’ 또는 ‘컬럼 NOT IN’로 사용하면 됩니다.
주의할 점이 있습니다.
CLUBNO의 값이 ‘10’, ‘20’, ‘30’이 아닌 NULL로 된 행이 3개 있지만
NOT IN으로 조회하면 결과에 나오지 않습니다.
IN이 내부적으로 OR로 변환하면서 검색에서 연산자(=, <>, !=)로 NULL을
사용할 수 없기 때문으로 보입니다.
NULL은 IS NULL 또는 IS NOT NULL로 체크를 하기에 누락된다고 봅니다.
그래서 NOT IN을 사용하는 경우는 NULL에 대해 잘 확인하고 사용해야 합니다.
IN에서 값을 하나씩 명시적으로 입력해서 사용해도 되지만
서브 쿼리를 사용할 수 있는 장점이 있습니다.
IN 컬럼에 맞는 하나의 컬럼에 매칭 되도록 서브 쿼리를 작성해서 사용하면
하나씩 컬럼값을 입력하지 않아도 된답니다.
또한 컬럼을 2개 이상을 사용할 수도 있습니다.
IN 조건도 정말 많이 사용하는 조건 키워드입니다.
잘 이해하고 사용한다면 쿼리 작업에 도움이 될 겁니다.
잘못된 정보나 수정이 필요하면 댓글 주세요
아래 하트(공감) 버튼을 눌러서 더 다양한 글을 쓸 수 있게 응원 부탁드립니다. 감사합니다.