조건: On 대 WHERE의 LEFT JOIN
SQL Server에서 LEFT JOIN은 연결하는 동안 한 테이블에서 데이터를 검색하는 데 자주 사용됩니다. 공통 열을 통해 다른 테이블로 이동합니다. 그러나 ON 및 WHERE 절에 조건을 사용하면 미묘한 차이가 발생하여 결과가 달라집니다.
JOIN ON 절과 WHERE 절
ON 절은 LEFT JOIN은 기본 테이블(조인된 테이블)의 어떤 행이 보조 테이블(조인 테이블)의 행과 일치할지 결정하는 조건을 지정합니다. 반면, WHERE 절은 조인이 수행된 후 결과 집합을 필터링합니다.
예
다음 두 쿼리를 고려하세요.
-- LEFT JOIN with Condition in ON Clause SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 AND t2.f3 > something; -- LEFT JOIN with Condition in WHERE Clause SELECT t1.f2 FROM t1 LEFT JOIN t2 ON t1.f1 = t2.f1 AND cond2 WHERE t2.f3 > something;
결과
놀랍게도 이 둘은 쿼리는 동일한 결과를 생성하지 않습니다. 그 이유는 JOIN 절과 WHERE 절의 차이에 있습니다.
첫 번째 쿼리에서 ON 절의 조건은 t2의 어떤 행이 t1과 조인되는지를 제한합니다. 따라서 조건(t2.f3
두 번째 쿼리에서는 WHERE 절의 조건이 조인 후에 적용됩니다. 수행되었습니다. 결과적으로 t1의 모든 행은 조건 충족 여부에 관계없이 t2의 모든 행과 조인됩니다. 이후 WHERE 절은 조건을 충족하지 않는 행을 필터링하여 첫 번째 쿼리와 다른 결과 집합을 제공합니다.
결론
ON 및 WHERE 절은 LEFT JOIN으로 작업할 때 매우 중요합니다. ON 절은 조인에 대해 일치하는 행을 결정하는 반면, WHERE 절은 조인이 완료된 후 결과 집합을 필터링합니다. 이러한 이해를 통해 LEFT JOIN과 관련된 SQL 쿼리에서 원하는 결과를 얻을 수 있습니다.
위 내용은 SQL Server의 LEFT JOIN: ON 절과 WHERE 절 – 차이점은 무엇이며 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!