>데이터 베이스 >MySQL 튜토리얼 >SQL JOIN: WHERE와 ON: 필터링 결과가 언제 다릅니까?

SQL JOIN: WHERE와 ON: 필터링 결과가 언제 다릅니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-23 03:06:13418검색

SQL JOINs: WHERE vs. ON: When Do They Differ in Filtering Results?

SQL JOIN: 데이터 필터링의 WHERE 및 ON 절 차이점

SQL의 WHEREON 절은 조인에 자주 사용되지만 뚜렷한 필터링 기능을 수행합니다. 효율적인 쿼리 설계를 위해서는 이러한 차이점을 이해하는 것이 중요합니다.

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.OrderIDOrders.ID Orders.ID이 12345와 일치하는 경우에만 행이 조인되도록 지정합니다. 이 사전 조인 필터링은 실제 조인이 발생하기 전에 처리되는 데이터를 줄입니다. .

기능적 동등성과 의미적 구별

때때로 두 절을 사용하여 기능적으로 동일한 결과를 얻을 수 있지만 그 의미는 크게 다릅니다. WHERE은 조인 후에 필터링하고 ON는 조인 프로세스 자체에 영향을 줍니다.

이러한 의미적 차이는 LEFT 또는 RIGHT JOINs에서 특히 두드러집니다. WHERE 또는 LEFT가 해당 테이블의 모든 행을 포함하도록 설계되었더라도 RIGHT JOIN 절 조건은 왼쪽 또는 오른쪽 테이블의 행을 제외할 수 있습니다. 필터링 조건에 ON을 사용하면 조인 자체가 지정된 테이블의 모든 행을 의도적으로 포함하도록 보장됩니다.

INNER JOINs의 경우 효과는 유사한 경우가 많지만 의미적 차이는 그대로 유지됩니다.

위 내용은 SQL JOIN: WHERE와 ON: 필터링 결과가 언제 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.