티스토리 뷰

데이터베이스/SQL

[SQL] WHERE 1=1 의미

Reference M1 2021. 1. 20. 14:17

 

쿼리를 사용하다 보면 WHERE 1=1을 종종 사용할 때가 있다. 처음 접하시는 분들은 정확한 의미를 모르고 사용하기도 한다. 근데 사용하다 보면 의문이 든다. 왜 써야 하는가?

1=1의 의미는 단순히 항상 참이다.

보통은 SQL Client에서 데이터를 뽑기 위해 쿼리 문을 작성할 때 WHERE 절에 1=1로 조건을 걸고 이후 AND 조건을 자유자재로 넣고 빼기 위해서 사용한다.

SELECT *
  FROM USER_BAS
 WHERE 1=1
   AND DEL_YN = 'N'
  -- AND USE_YN = 'Y'
   AND USER_ID = 'U000000001';

 

쿼리문 작성 이후 Mybatis로 옮길 때는 WHERE 1=1은 의미가 없기 때문에 빼고 작성해야 한다. 고정적인 필수 선행 조건이 있다면 WHERE 절에 우선 조건을 걸면 되기 때문이다. (예시 DEL_YN, USE_YN)

불필요한 구문 작성을 지양해야 한다.

SELECT *
  FROM USER_BAS
 WHERE DEL_YN = 'N'
   AND USE_YN = 'Y'
   AND USER_ID = 'U000000001';

 

그럼에도 불구하고 꼭 사용해야 할 때가 있다. 쿼리의 조건문이 Mybatis 조건문에 모두 걸렸을 때이다.

SELECT *
  FROM USER_BAS
 WHERE 1=1
   <if test="userId != null and userId != ''">
   AND USER_ID = #{userId}
   </if>
   <if test="keyword != null and keyword != ''">
   AND (USER_NM LIKE CONCAT('%', #{keyword}, '%'))
   </if>

부득이하게 필수 선행 조건이 없고 모든 조건이 Mybatis 조건문에 걸릴 때에 유용하게 사용된다. 하지만 이런 경우가 아니라면 위에서 언급했듯이 WHERE 1=1을 되도록이면 지양해야 한다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함