껄껄껄
코딩무새입니다.
이번 포스팅에선 IN에 대해서 알아보겠습니다!
IN 연산자란?
IN 연산자는 특정 열의 값이 주어진 리스트에 포함되는지 사용하는데요.
리스트는 괄호 안에 들어있는 데이터를 의미합니다.
IN 연산자를 사용함으로써 OR를 여러 번 사용하지 않고도 같은 결과를 간단한 쿼리로 만들어낼 수 있어요.
기본문법
IN 연산자의 기본 문법은 다음과 같습니다.
...
WHERE {COLUMN1} IN ({VALUE1}, {VALUE2}, {VALUE3})
COLUMN1이라는 특정 열이 VALUE1~3까지의 데이터 리스트에 포함되는지 확인하는 것이죠.
실제 쿼리로 데이터를 확인해 보겠습니다.
예시 쿼리는 국가별 코드가 담긴 테이블인데요.
code가 KR / JP / US 리스트에 포함되는 열만 조회가 되었어요.
SELECT *
FROM country_code
WHERE code IN ('KR', 'JP', 'US');
+-----+------+----------+---------------+
| id | code | name_kr | name_en |
+-----+------+----------+---------------+
| 29 | KR | 대한민국 | South Korea |
| 69 | US | 미국 | United States |
| 175 | JP | 일본 | Japan |
+-----+------+----------+---------------+
3 rows in set (0.00 sec)
국가코드는 아래링크의 방법들을 활용했으니 궁금하시면 보러 가세요~
수집: https://coding-parrot.tistory.com/38
적재: https://coding-parrot.tistory.com/40
서브쿼리
서브쿼리란 SQL문 안에 또 다른 SQL문이 존재하는 것을 의미하는데요.
IN 연산자에서도 서브쿼리를 사용하여 데이터를 조회할 수 있습니다.
우선 IN 연산을 사용할 데이터를 볼까요?
국가 코드를 가지고 있는 사용자 데이터네요.
SELECT username, code
FROM users;
+----------+------+
| username | code |
+----------+------+
| parrot | KR |
| test1 | US |
| test2 | JP |
| test3 | DE |
| apt | KR |
| bear | CA |
| zip | US |
+----------+------+
7 rows in set (0.00 sec)
서브쿼리로 IN 연산자를 사용해 봅니다.
SELECT username, code
FROM users
WHERE code IN (SELECT code FROM country_code WHERE code IN ('KR','JP','US'));
+----------+------+
| username | code |
+----------+------+
| parrot | KR |
| test1 | US |
| test2 | JP |
| apt | KR |
| zip | US |
+----------+------+
5 rows in set (0.00 sec)
코드가 KR / JP / US 인 사용자 데이터만 잘 가져왔네요.
NOT IN
IN 연산자가 포함된 데이터를 가져온다면, 포함되지 않은 데이터만 가져오려면 어떻게 해야 할까요?
이럴 땐 NOT IN을 사용하면 됩니다!!!
SELECT username, code
FROM users
WHERE code NOT IN (SELECT code FROM country_code WHERE code IN ('KR','JP','US'));
+----------+------+
| username | code |
+----------+------+
| test3 | DE |
| bear | CA |
+----------+------+
2 rows in set (0.00 sec)
바로 위의 서브쿼리 사용 예제에서 IN을 NOT IN으로 바꿔봤어요.
KR / JP / US 코드가 포함되지 않은 DE / CA 사용자 데이터가 나왔네요.
참 쉽죠!?
IN을 사용하지 않고 OR를 사용한다면 쿼리가 복잡해질수록 문제가 많아질 확률이 높아집니다.
IN을 잘 활용하셔서 깔끔하고 편안한 코딩 하세요.
껄껄껄
'IT무새 > Database' 카테고리의 다른 글
[MySQL] 데이터 그룹화 | GROUP BY (2) | 2025.03.09 |
---|---|
[MySQL] LIKE 연산자 (2) | 2025.02.09 |
[MySQL] Mysql에 CSV 데이터 Import | HeidiSQL (2) | 2025.02.01 |
[MySQL] 쿼리 조건 | WHERE Clause (2) | 2025.02.01 |
[MySQL] 데이터 정렬 | ORDER BY (1) | 2025.01.24 |