반응형
이 문제는 IN 조건에 대해 이해할 수 있는 문제이고, IN 조건을 다중으로 사용하는 방법을 알아야 풀 수 있는 문제입니다.
문제
아래 SQL의 결과와 똑같은 SQL를 고르세요.
[TABLE_A]
COL1 | COL2 |
A | NULL |
B | A |
C | B |
D | C |
E | D |
[예문]
SELECT *
FROM TABLE_A
WHERE (COL1, COL2) IN (('B', 'A'), (NULL, 'C'))
1. SELECT * FROM TABLE_A WHERE COL1 = 'B'
2. SELECT * FROM TABLE_A WHERE COL1 IN ('A', 'B')
3. SELECT * FROM TABLE_A WHERE (COL1, COL2) IN (('A', 'B'), ('B','C'))
4. SELECT * FROM TABLE_A WHERE (COL1, COL2) IN (('B', 'C'), ('C','D'))
문제풀이
- 다중 IN 조건은 둘 다 만족해야 결과를 리턴한다.
- 다중 IN 조건의 컬럼들은 AND로 값들의 비교는 OR로 이해하면 편하다.
SELECT *
FROM TABLE_A
WHERE (COL1, COL2) IN (('B', 'A'), (NULL, 'C'))
>>
WHERE (COL1 = 'B' AND COL2 = 'A') OR (COL1 = NULL AND COL2 = 'C')
>> 위에 처럼 컬럼은 AND로 값은 OR로 풀린다.
1. SELECT * FROM TABLE_A WHERE COL1 = 'B'
>> COL1이 'B'인 ROW
2. SELECT * FROM TABLE_A WHERE COL1 IN ('A', 'B')
>> COL1이 'A' 이거나 'B' 인 ROW
>> COL1 = 'A' OR COL1 = 'B'
3. SELECT * FROM TABLE_A WHERE (COL1, COL2) IN (('A', 'B'), ('B','C'))
>> COL1이 'A' 이고 COL2가 'B'이면서 COL1이 'B' 이고 COL2가 'C'인 ROW
>> (COL1 = 'A' AND COL2 = 'B') OR (COL1 = 'B' AND COL2 = 'C')
4. SELECT * FROM TABLE_A WHERE (COL1, COL2) IN (('B', 'C'), ('C','D'))
>> COL1이 'B' 이고 COL2가 'C'이면서 COL1이 'C' 이고 COL2가 'D'인 ROW
>> (COL1 = 'B' AND COL2 = 'C') OR (COL1 = 'C' AND COL2 = 'D')
오늘은 다중 IN 조건을 해석하는 방식에 대해서 알아봤습니다~
추가적인 궁금증은 댓글로 달아주세요!! :)
반응형
'SQL' 카테고리의 다른 글
SQL 강의 SQLP SQLD 기출 문제 - 006 ( ORACLE AUTO COMMIT ) (0) | 2022.10.10 |
---|---|
SQL 강의 SQLP SQLD 기출 문제 - 005 / 데이터 타입, 묵시적 형변환 (0) | 2022.10.08 |
SQL 강의 SQLP SQLD 기출 문제 - 003 / ORACLE OUTER JOIN 이해 (0) | 2022.10.06 |
SQL 강의 SQLP SQLD 기출 문제 - 002 ( NULL, CASE, DECODE, NVL 이해 ) (0) | 2022.10.06 |
SQL 강의 SQLP SQLD 기출 문제 - 001 / INSERT, PRIMARY KEY, NOT NULL 제약 조건 (0) | 2022.10.05 |
댓글