--- id: sql-in title: "SQL In" category: "Database" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["SQL IN Operator", "IN operator", "SQL 포함 연산자"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.9 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["sql", "database", "w3schools", "in", "subquery", "where"] raw_sources: ["https://www.w3schools.com/sql/sql_in.asp"] applied_in: [] github_commit: "" --- # [[SQL In]] ## 🎯 한 줄 통찰 (One-line insight) IN is a shorthand for multiple OR conditions on the same column, and can take either a literal value list or a subquery result set. [S1] ## 🧠 핵심 개념 (Core concepts) - **IN operator** — checks if a column's value matches any value within a provided list, functioning as shorthand for chained OR conditions. [S1] - **Syntax** — `SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...);`. [S1] - **NOT IN** — returns records whose value is NOT any of the listed values. [S1] - **IN (SELECT ...)** — the value list can be replaced with a subquery, returning rows present in the subquery's result. [S1] ## 🧩 추출된 패턴 (Extracted patterns) - **IN as OR-shorthand** — `WHERE Country IN ('Germany','France','UK')` is equivalent to, and shorter/more readable than, `WHERE Country='Germany' OR Country='France' OR Country='UK'`. [S1] - **Subquery membership test** — `WHERE CustomerID IN (SELECT CustomerID FROM Orders)` filters the outer query to rows whose key appears in a related table's query result — a lightweight alternative to a JOIN when only filtering (not selecting extra columns) is needed. [S1] ## 📖 세부 내용 (Details) - Literal list form: `SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK');` — equivalent longer form: `WHERE Country = 'Germany' OR Country = 'France' OR Country = 'UK';`. [S1] - Negated list form: `WHERE Country NOT IN ('Germany', 'France', 'UK');`. [S1] - Subquery form: `WHERE CustomerID IN (SELECT CustomerID FROM Orders);` returns customers who have placed at least one order. [S1] - Negated subquery form: `WHERE CustomerID NOT IN (SELECT CustomerID FROM Orders);` returns customers who have never placed an order. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) 소스에서 모순되는 정보는 발견되지 않음. ## 🛠️ 적용 사례 (Applied in summary) 현재 발견된 실제 적용 사례가 없습니다 — 실제 예제에서 "74개 레코드가 반환되었으므로 17명의 고객이 주문이 없다"는 식으로 IN/NOT IN 결과를 상호 검증하는 방식이 소스에 등장한다. [S1] ## 💻 코드 패턴 (Code patterns) Value-list IN (SQL): ```sql SELECT * FROM Customers WHERE Country IN ('Germany', 'France', 'UK'); ``` Subquery IN (SQL): ```sql SELECT * FROM Customers WHERE CustomerID IN (SELECT CustomerID FROM Orders); ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.90 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[SQL Tutorial]] - **관련 개념:** [[SQL Or]], [[SQL Between]], [[SQL Exists]], [[SQL Where]] - **참조 맥락:** 동일 컬럼에 대한 다중 OR 조건이나 서브쿼리 멤버십 테스트가 필요할 때 재사용. ## 📚 출처 (Sources) - [S1] W3Schools — SQL IN Operator — https://www.w3schools.com/sql/sql_in.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "SQL IN Operator" page (Astra wiki-curation, P-Reinforce v3.1 format).