[MySql] WHERE 1=1

    이는 MYSQL 뿐만 아니라 웬만한 SQL문에 사용 할 수 있다.

     

     

    SQL문장을 접한 저에게, 가장 의문스러운 일.

     

    SELECT * FROM 테이블명 WHERE 1=1

     

    WHERE 1=1을 왜 하는걸까?

     

     

    이유는 간단하다.

     

     

    서버에서 SQL을 동적처리하기 위함이다.

    (필자는 JAVA - SPRING - MYBATIS를 사용한다.)

    가장 대표적인 사이트, CGV를 예시로 들었다.

    만약, 여기에 대한 검색값이 선택이 되어있지 않거나 5개의 선택값이 되었을 경우

    SQL의 WHERE절 조건값은 0개에서 ~5개로 정해진다.

     

     

    이때, 최소 6개의 쿼리문이 필요하게 되는데 이에 따라 SQL을 더 사용하는 것은 중복코드, 코드가 난잡해질수가 있다.

    그래서

     

    <select id="test" parameterType="" resultType="">
    SELECT
    *
    FROM CGV
    WHERE
    WHERE 1=1
    <if test="val != null and val != '' ">
    	<choose>
        	<when test="val== '1'>
            	AND BI_SAL1 = '1'
            </when>
            <when test="val == '2'>
            	AND BI_SAL2 = '2'
            </when>
    </if>
    </select>

    이렇게 WHERE 1=1이란, 반드시 참의 값이 있기 때문에

    뒤에 자연스럽게 AND가 붙어서 연달아 사용할 수 있게 된다.

     

    이는 어디까지나 예시를 위한 즉흥적으로 작성한 방법이고, 활용도는 무지 많다.

    반응형

    댓글

    Designed by JB FACTORY