티스토리 뷰
📌 SQL문 IN 연산자
IN 연산자는 지정된 목록에 있는 여러 값 중 하나와 일치하는 행을 선택하는 데 사용됩니다.
OR 조건을 여러 번 사용하는 것보다 간결하고 가독성이 좋습니다.
주로 특정 값 집합을 기준으로 데이터를 필터링할 때 유용합니다.
📌 기본 사용법
SELECT column_name
FROM table_name
WHERE column_name IN (value1, value2, ...);
-
- column_name: 값을 비교할 열의 이름
- value1, value2, ...: 비교할 값들의 목록.
📌 사용 예시
1. 숫자 값을 사용
SELECT * FROM employees
WHERE department_id IN (1, 2, 3);
-
- 위 쿼리는 department_id가 1, 2, 또는 3인 직원들을 선택합니다.
2. 문자 값을 사용
SELECT * FROM products
WHERE category IN ('Electronics', 'Clothing', 'Books');
-
- 위 쿼리는 category가 'Electronics', 'Clothing', 또는 'Books'인 제품을 선택합니다.
3. 날짜를 사용
SELECT * FROM orders
WHERE order_date IN ('2024-01-01', '2024-03-15', '2024-07-20');
-
- 위 쿼리는 order_date가 '2024-01-01', '2024-03-15', 또는 '2024-07-20'인 주문들을 선택합니다.
📌 GOOD 사용법
1. 특정 목록에 있는 값 필터링
-
- 여러 값 중 하나와 일치하는 데이터를 쉽게 필터링할 수 있습니다.
- 예: 특정 부서에 속한 직원들을 찾을 때.
SELECT * FROM employees
WHERE department_id IN (10, 20, 30);
2. 복수의 조건을 처리할 때 가독성 향상
-
- OR 조건을 여러 번 쓰는 대신 IN을 사용하여 쿼리를 더 간결하게 만들 수 있습니다.
-- `IN` 사용
SELECT * FROM customers
WHERE country IN ('USA', 'Canada', 'Mexico');
-- `OR` 사용 (덜 권장됨)
SELECT * FROM customers
WHERE country = 'USA' OR country = 'Canada' OR country = 'Mexico';
📌 BAD 사용법
1. 값이 적을 때
-
- IN을 사용하는 것보다 =를 사용하는 것이 더 직관적일 수 있습니다.
-- 잘못된 예시
SELECT * FROM employees
WHERE department_id IN (5);
-- 더 나은 방법
SELECT * FROM employees
WHERE department_id = 5;
2. 값 목록이 너무 클 때
-
- 목록에 너무 많은 값을 사용할 경우, 쿼리의 성능이 떨어질 수 있습니다.
- 많은 값이 있을 때는 별도의 테이블을 사용하거나 JOIN을 고려하는 것이 좋습니다.
IN 연산자는 다수의 값을 비교할 때 매우 유용하지만,
사용할 때는 비교할 값의 수와 목록의 크기에 주의해야 합니다.
반응형