재검토되는 Left 조인: ON 절과 WHERE 절의 구별
SQL Server에서 LEFT JOIN 연산은 데이터 검색에 중요한 역할을 합니다. 여러 테이블에서. 그러나 ON 절과 WHERE 절에 조인 조건을 지정하는 것 사이에는 미묘하지만 중요한 차이가 있습니다.
다음 쿼리를 고려하십시오.
SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something
이 쿼리는 f2 열을 검색하려고 시도합니다. f1 열의 일치하는 값과 추가 조건(cond2 및 t2.f3 > Something).
반대로 다음 쿼리는 다른 접근 방식을 취합니다.
SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 WHERE t2.f3 > something
여기서 조인 조건은 ON 절에만 지정되고 t2.f3 > WHERE 절에 어떤 조건이 필터로 추가됩니다.
차이 이해
이 두 쿼리의 주요 차이점은 작업 순서에 있습니다.
예
이러한 구별을 설명하기 위해 후보자 표를 고려하십시오. (후보자) 및 투표 테이블(투표):
candidates | name | |-------------| | Obama | | Romney | votes | voter | voted_for | |-------------|-------------| | Mickey Mouse | Romney | | Donald Duck | Obama |
쿼리 1:
SELECT * FROM candidates c LEFT JOIN votes v ON c.name = v.voted_for AND v.voter = 'Donald Duck'
이 쿼리는 Romney를 포함한 모든 후보자를 검색합니다. 도널드 덕이 오바마에게 투표했다. ON 절에 v.voter = 'Donald Duck' 조건이 지정되어 조인 연산에만 영향을 미치기 때문입니다.
쿼리 2:
SELECT * FROM candidates c LEFT JOIN votes v ON c.name = v.voted_for WHERE v.voter = 'Donald Duck'
이 쿼리에서는 v.voter = 'Donald Duck' 조건이 WHERE 절로 이동되었습니다. 결과적으로 롬니는 도널드 덕과 일치하는 표를 얻지 못해 결과 집합에서 제외됐다. Donald Duck의 투표를 받은 Obama만 반환됩니다.
결론
LEFT JOIN 연산에서 ON과 WHERE 절의 차이점을 이해하는 것은 효과적인 검색을 위해 필수적입니다. SQL Server의 데이터. 해당 절에 조건을 신중하게 배치하면 일치 기준을 제어하고 결합된 결과 집합을 효율적으로 필터링할 수 있습니다.
위 내용은 SQL Server의 LEFT JOIN: `ON` 절과 `WHERE` 절의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!