ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MySQL] AND/IN의 간단한 활용
    DB/MySQL 2021. 1. 30. 11:44

    SQL문을 작성할 때 WHERE절의 조건식에서 같은 칼럼이 반복되는 경우에는 OR 대신에 IN을 쓰면 가독성이 좋아지는 장점이 있습니다. 하지만 언제나 이 둘을 바꿔쓸 수 있는 것은 아닙니다. AND 등의 조건절이 붙을 때는 의도대로 작동하지 않을 수 있습니다. 만약 육류 카테고리 중에서 소고기이면서 무게가 600g, 900g, 2kg인 상품을 검색해야 한다고 가정해봅시다. 다음과 같은 실수가 나올 수 있습니다.

     

    SELECT * FROM MEAT WHERE type='소고기' AND WEIGHT=600 OR WEIGHT=900 OR WEIGHT=2000

     

    원하는 결과가 나올까요? 아쉽게도 우리는 [600g인 소고기]와 900g, 2kg 무게가 나가는 모든 고기의 데이터를 얻게 될 것입니다. 위의 쿼리문이 당연히 문제가 없을 거라고 생각하고 검색된 데이터를 눈으로 확인해보지 않으면, 나중에 가서야 웹 페이지에 엉뚱한 결과가 나오는 걸 눈이 휘둥그레지겠죠. 이 경우에 IN 연산자를 사용하면 됩니다. IN 연산자를 쓰지 않으면 쿼리문이 굉장히 길어지게 됩니다.

    SELECT * FROM MEAT WHERE type='소고기' AND WEIGHT=600 OR type='소고기' WEIGHT=900 OR type='소고기' WEIGHT=2000

     

    위처럼 긴 쿼리문을 아래처럼 짧게 줄일 수 있습니다. 실수로 작성했던 쿼리문보다도 짧습니다.

    SELECT * FROM MEAT WHERE type='소고기' AND WEIGHT IN(600, 900, 2000)

     

     

    댓글

Designed by Tistory.