SELECT FROM A, B WHERE A.a *= B.a AND B.b = '1'
SELECT FROM A left outer join B ON A.a = B.a WHERE B.b = '1'
SELECT FROM A left outer join B ON A.a = B.a AND B.b = '1'
이 세쿼리에 동작에 어떠한 차이가 있는지 알고 싶은데 잘 모르겠습니다...
두 쿼리의 차이는 테스트 해보시면 아시겠지만 첫번째와 마지막이 같은 결과를 가져오고
두번째는 다른 결과를 가져오게 될겁니다.
tsql에서는 아웃조인을 걸때 어디까지가 아웃조인을 걸기위한 조건인지 걸고난 후의 조건인지를 명확하게 구분짓기가 힘듬니다. 그래서 아웄조인 부분을 인라인뷰로 구분하고 다시 조건을 주어야 합니다.
이를 무시하고 하나의 조건으로 주게되면 원하는 결과를 보기가 힘들게 되구요...
안시쿼리에서는 이에 대한 정의가 명확하게 나눠집니다. 조인문 뒤에 on이 조인을 걸기 위한 조건입니다.
다음에 나오는 where절인 조인 걸려나온 자료에 대한 조건이구요.