Welcome to Our Website

SQL 팁:왼쪽 조인 및 where 절…

X

개인정보 보호&쿠키

이 사이트는 쿠키를 사용합니다. 계속함으로써,당신은 그들의 사용에 동의합니다. 쿠키를 제어하는 방법을 포함하여 자세히 알아보십시오.

그것을 얻었다!,
광고

때가 있 검토 SQL 쿼리를 찾는 사람들을 사용하여 외부인이지만 다음 WHERE 절을 사용하여는 그 조인으로 안 합니다. 최근에는 제가 언급했듯이 사람에게 그들은 나는 그것에 대해 블로그…그래서 내가 여기에 대한 블로그습니다. 🙂

먼저 다른 조인에 익숙하지 않은 경우 가서 내가 쓴이 다른 SQL 팁을 읽으십시오., 이제 왼쪽 외부 조인에 대해 조금 더 배우겠습니다(여기에서 왼쪽 조인으로 간단히 참조 할 것입니다).몇 가지 샘플 데이터부터 시작하겠습니다. 이러한 테스트를 직접 실행하려는 경우 자체 쿼리의 시작 부분에서 다음을 사용할 수 있습니다. 보시다시피 두 개의 테이블(테이블 변수)을 만듭니다.,

우리가 원하는 경우에 반환 모든 레코드”Table1″가 있는지 여부에 관계없이 모든 관련 기록에서”2″과 데이터를 표시에서”2″이 있을 때 관련 기록 우리를 쓸 것이라고로 왼쪽의 참여 아래와 같이

SELECT * FROM @Table1 tb1 LEFT OUTER JOIN @Table2 tb2 ON tb1.colID = tb2.columnID;

출력:

그러나, 면 우리는 지금 추가하려는 WHERE 절을 쿼리를 만 데이터를 얻을에서”2″where ID 가 4 미만 우리는 다음과 같은 것이 가능합니다.

SELECT * FROM @Table1 tb1 LEFT OUTER JOIN @Table2 tb2 ON tb1.colID = tb2.columnID WHERE tb2.columnID < 4;

출력:

지만 당신은 보았는가 하는 우리만의 값이 있는 곳에 일치하는 ID 에서 두 테이블?, 흠…내부 조인처럼 많이 행동하는 것 같습니까? 그렇기 때문입니다. 나를 믿지 않니? WHERE 조건 유무에 관계없이 LEFT JOIN 을 실행 한 후 실행 계획을 살펴보십시오. 다음은 당신이 볼 수있는 것입니다:

그래서 우리는 어떻게 이것을 해결할 수 있습니까? 기 때문에,당신은 왼쪽 가입하세로 시작하는 당신은 분명히 필요 또 원하는 모든 레코드에서”Table1″에 관계없이 데이터에서”2″., 그리고 당신이 정말로 원하지 않는 데이터를 반환을 위해 특정 레코드에서”2″그런 다음 필터링할 수 있습니다 그 기록을에서의 가입 조건자(‘검색 기준’에 부분에의 가입하). 예를 들어,마지막 쿼리는 것은 다음과 같이 쓰이는 대신:

SELECT * FROM @Table1 tb1 LEFT OUTER JOIN @Table2 tb2 ON tb1.colID = tb2.columnID AND tb2.columnID < 4;

출력:

을 참조하십시오 얼마나 우리는 여전히 5 개의 레코드에서”Table1″하지만 데이터에서”2″그건을 충족하지 않은 우리의 기준인가? 기준을 충족하지 않는 해당 테이블의 데이터에 대해 Null 만 반환합니다. 꽤 멋진 권리?,

그리고 우리는 볼 수 있습니다 실행 계획은 다음을 증명하는 우리는 실제로 사용하는 왼쪽 가입:

에 대해 무엇을 할 때는 대신 값을 사용하여 IS NULL 조건을 대신? 글쎄,그 경우에 당신은 WHERE 절에서 그것을 사용할 수있다.

SELECT * FROM @Table1 tb1 LEFT OUTER JOIN @Table2 tb2 ON tb1.colID = tb2.columnID WHERE tb2.columnID IS NULL;

출력:

고 살펴 보자,실행 계획을 다시:

알 수행 왼쪽에 가입하고 다음 데이터를 필터링에 대해 NULL records? 그것이 우리가 원하는 것이고 솔직히,그것은 우리가 아마 그것을 할 것으로 기대했던 것입니다.

우리가 사용하는 경우 대신 NULL 이 아닙니까? 음…그건 또 다른 이야기입니다., 나는 놀람을 망치고 단지 그것이 실제 가치와 마찬가지로 내부 조인을 할 것이라고 말할 것입니다. 당신이 나를 믿지 않는다면 가서 쿼리를 직접 실행하고 실행 계획을 살펴보십시오.왼쪽 조인이 실제로 왼쪽 조인 일 수도 있고 그렇지 않을 수도 있습니다. 희망이 정보는 당신이 더 나은,또는 적어도,더 많은 정보 쿼리를 작성하는 데 도움이됩니다.

광고

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다