집 >데이터 베이스 >MySQL 튜토리얼 >SQL JOIN: WHERE와 ON: 필터링 결과가 언제 다릅니까?
SQL JOIN: 데이터 필터링의 WHERE 및 ON 절 차이점
SQL의 WHERE
및 ON
절은 조인에 자주 사용되지만 뚜렷한 필터링 기능을 수행합니다. 효율적인 쿼리 설계를 위해서는 이러한 차이점을 이해하는 것이 중요합니다.
WHERE
조항: 조인 후 필터링
WHERE
문 뒤에 나타나는 JOIN
절은 조인에 의해 생성된 전체 결과 집합을 필터링합니다. 조인 작업이 완료된 후 지정된 조건을 충족하지 않는 행을 제거하는 조인 후 필터 역할을 합니다. 예:
<code class="language-sql">SELECT * FROM Orders LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID WHERE Orders.ID = 12345;</code>
여기에서 WHERE
절은 Orders.ID
이 12345인 행만 포함하도록 결과를 필터링합니다. 이 조건을 충족하지 않는 행은 LEFT JOIN
가 이미 Orders
의 데이터를 결합한 이후에 제거됩니다. 그리고 OrderLines
.
ON
조항: 사전 조인 필터링
반대로, ON
문 자체에 있는 JOIN
절은 조인 기준을 정의합니다. 조인이 실행되기 전에 조인된 테이블에서 일치해야 하는 행을 결정합니다. 다음 쿼리를 고려해보세요.
<code class="language-sql">SELECT * FROM Orders LEFT JOIN OrderLines ON OrderLines.OrderID = Orders.ID AND Orders.ID = 12345;</code>
ON
절은 OrderLines.OrderID
이 Orders.ID
과 Orders.ID
이 12345와 일치하는 경우에만 행이 조인되도록 지정합니다. 이 사전 조인 필터링은 실제 조인이 발생하기 전에 처리되는 데이터를 줄입니다. .
기능적 동등성과 의미적 구별
때때로 두 절을 사용하여 기능적으로 동일한 결과를 얻을 수 있지만 그 의미는 크게 다릅니다. WHERE
은 조인 후에 필터링하고 ON
는 조인 프로세스 자체에 영향을 줍니다.
이러한 의미적 차이는 LEFT
또는 RIGHT JOINs
에서 특히 두드러집니다. WHERE
또는 LEFT
가 해당 테이블의 모든 행을 포함하도록 설계되었더라도 RIGHT JOIN
절 조건은 왼쪽 또는 오른쪽 테이블의 행을 제외할 수 있습니다. 필터링 조건에 ON
을 사용하면 조인 자체가 지정된 테이블의 모든 행을 의도적으로 포함하도록 보장됩니다.
INNER JOINs
의 경우 효과는 유사한 경우가 많지만 의미적 차이는 그대로 유지됩니다.
위 내용은 SQL JOIN: WHERE와 ON: 필터링 결과가 언제 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!