민서네집

OUTER JOIN - WHERE 절의 조건을 ON 절에 쓰면 무시된다. 본문

Database

OUTER JOIN - WHERE 절의 조건을 ON 절에 쓰면 무시된다.

브라이언7 2013. 6. 19. 23:41

OUTER JOIN - WHERE 절의 조건을 ON 절에 쓰면 무시된다.


MySQL 에서 쿼리를 작성했는데, OUTER JOIN 에서 WHERE 절에 쓸 것을 ON 절에 조건으로 주었더니, 그 조건이 그냥 무시되었다.


SELECT

   A.COL1,

   B.COL1  

FROM

   A 

LEFT JOIN

   B  

      ON A.COL1 = B.COL1  

      AND A.USE_YN = 'Y'  

      AND B.USE_YN = 'Y'


위의 쿼리에서

AND A.USE_YN = 'Y' 조건이 무시된다.

즉 쿼리의 결과에 A.USE_YN = 'N' 인 ROW도 SELECT 된다.


즉, ON 절에서는 JOIN 에 관련된 조건만 써야하고, JOIN 에 관계없는 조건은 무시된다는 사실...


위의 쿼리는 아래와 같이 변경해야 한다.


SELECT

   A.COL1,

   B.COL1  

FROM

   A 

LEFT JOIN

   B  

      ON A.COL1 = B.COL1  

      AND B.USE_YN = 'Y'  

WHERE

   A.USE_YN = 'Y'


이 쿼리는 결과에는 A.USE_YN = 'N' 인 ROW는 포함되지 않는다.


'Database' 카테고리의 다른 글

SQL Formatter  (0) 2018.02.20
ERwin - 컬럼명 고정시키기(Harden)  (0) 2013.07.22
국내 오픈소스 DB툴 Tadpole (올챙이)를 소개 합니다.  (0) 2013.06.29
Transaction 테스트  (0) 2013.06.28
Please stop using SELECT MAX(id)  (0) 2013.06.21
Comments