[Mysql] SQL IN 사용하기

반응형

 

IN에 대한 설명

SELECT *
FROM [테이블 명]
WHERE 컬럼명 IN ('조건 값 1', '조건 값 2');

 

equals('=')과 비슷하지만 or의 개념과 유사하다고 할 수 있다.

해당 테이블 내의 검색하고자 하는 컬럼의 값을 2개 이상 조회 할 때 이용하는 연산자이다.

 

'조건값 1'과 '조건 값 2' 중 하나라도 포함이 되면 true가 된다.

 

 

 

실험 대상의 TABLE 

더보기

CREATE TABLE

create table TB_RED
(
    RED_COL1 int auto_increment,
    RED_COL2 int     ,
    RED_COL3 VARCHAR(30) ,
    CONSTRAINT TB_RED_pk PRIMARY KEY (RED_COL1)
)
    comment '첫 번째 테이블';

실험에 참가 된 테이블

 

실험에 참가 된 테이블은 다음과 같다.

컬럼은 3개이며, INT(PK), INT와 VARCHAR2가 담겨 있는 테이블이다.

 

IN에 대한 결과 - 단일 사용

SELECT *
FROM TB_RED
WHERE RED_COL3 IN ('A', 'B');

 

 

테이블에서 IN을 할 경우, 결과가 총 3행이 나오는 것을 확인할 수 있다.

RED_COL3이 'A' 혹은 'B'의 대상이 4개 중 3개가 일치된다는 의미이다.

 

IN에 대한 결과 - 다중 사용

SELECT *
FROM TB_RED
WHERE (RED_COL2, RED_COL3) IN ((50, 'A'));

 

IN은 다중 사용이 가능하다.

컬럼 2개를 괄호를 이용해서 사용하면 된다.

여기서 주의할 점은, 다중 사용이 될 경우, 두 개의 조건 모두가 참일 경우에만 true이다.

즉, 여기서는 AND와 유사하다.

 

 

총 테이블의 4 행 중, 1개의 행만 표시되는 것을 확인할 수 있다.

 

 

 

그 외 잡지식

IN은 index의 효과를 받는다. 즉, index를 의식해서 사용을 주저할 필요는 없다.

 

여기서 IN은 다중 사용 할 경우, AND 조건과 유사하다는 점이므로 향후 사용하게 될 경우 주의하도록 하자.

반응형

댓글

Designed by JB FACTORY