본문 바로가기
SQL 문제 풀기/2. SQLD 기출 : 2024.3.01~2024.4.25

<SQLD 43> in 연산자 대한 기출문제

by HYEHYE_SON 2024. 4. 12.
728x90

매일 SQLD 기출 문제 풀기 챌린지


 


문제 43.

다음 주어진 테이블에 대해서 아래의 SQL문을 수행하였을 때 결과 행의 수는? 

 

[ 테이블 : TEST43 ]

COL1 COL2
10000 ABC
10000 NULL
10000 AbC
20000 ABC

 

[ SQL ]

SELECT * 
    FROM TEST43 
    WHERE (COL1, COL2) IN ((10000,'ABC'));

 
①   NULL
②  1
③  2
④  3


해설해보기

■ IN 연산자
IN 연산자는 주어진 값 목록 중 하나라도 일치하는 행을 찾을 때 사용하는 연산자입니다. 
예를들어 아래와 같이 쓰인다면, col1 에 10000 또는 20000 이 있는 행을 찾습니다. 

WHERE col1 IN (10000, 20000) ;

하지만 문제에 제시된 쿼리처럼 튜플(여러 컬럼의 조합)에 대해서도 사용할 수 있습니다. 

 

제공된 쿼리는 IN연산자를 사용해서 COL1과 COL2 컬럼 값의 조합이

지정된 튜플 목록 중 하나와 일치하는지를 확인합니다. 

여기서는 튜플 목록이 단 하나의 튜플인 (10000, 'ABC')로 구성되어 있습니다. 

 

제공된 쿼리는 TEST43 테이블에서 
COL1 = 10000이고,
COL2 = 'ABC'인 행을 출력하는 쿼리입니다. 

이때 'ABC'는 대소문자를 구분하기 때문에 'AbC'는 서로 다른 값으로 처리됩니다. 

 

직접 실행해보기

SELECT * 
    FROM TEST43
    WHERE (COL1, COL2) IN ((10000,'ABC'));

 


관련 스크립트

DROP TABLE TEST43;

CREATE TABLE TEST43 (
    COL1 NUMBER,
    COL2 VARCHAR2(50)
);

INSERT INTO TEST43 (COL1, COL2) VALUES (10000, 'ABC');
INSERT INTO TEST43 (COL1, COL2) VALUES (10000, NULL);
INSERT INTO TEST43 (COL1, COL2) VALUES (10000, 'AbC');
INSERT INTO TEST43 (COL1, COL2) VALUES (20000, 'ABC');

COMMIT;

 
 

반응형