제가 생각하기론 A left outer join B를 하면 기본적으로 A의 row는 모두 검색되고 B의 데이터는 있는 것은 나오고 없는것은 null로 나오는 것이 정상인거 같은데요.. 결과가 마치 inner join인 것과 동일하게 나오네요.
select A.a, A.b, A.c, B.x
from A left outer jon B
where A.a = B.a --> 조건1
and B.x = 'xxx' --> 조건2
이런 쿼리인데, 맨 아래 있는 B에 대한 조건 (조건2)을 주지 않으면 A의 Row가 모두 나오고 B의 없는 값은 null로 나오는데 반해서, B에 대한 조건(조건2)을 주는 순간 결과값이 마치 inner join인 것처럼 나오네요. 그러니까 A.a의 값중 B.a에 없는 값은 row 자체가 읽혀지지 않는거지요.
더 웃긴건 조건2를 로 줘도 마찬가지라는거죠.
조건2가 (B.x = B.x) 면 조건2는 있으나 없으나 결과가 같아야 하는거 아닌가요?
그런데 조건2가 없으면 제가 원하는 outer join의 결과가 나오고,
조건2가 있으면 마치 inner join을 한것과 같은 결과가 나오네요..
게다가 이경우 left outer join, right outer join, full outer join, inner join의 결과가 모두 같네요.
누구 아시는분 없으세요? 도대체 왜 이런거죠?
|