[MySql] WHERE 1=1
- 카테고리 없음
- 2021. 1. 11.
이는 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가 붙어서 연달아 사용할 수 있게 된다.
이는 어디까지나 예시를 위한 즉흥적으로 작성한 방법이고, 활용도는 무지 많다.
반응형