>데이터 베이스 >MySQL 튜토리얼 >SQL 조인: `FROM` 절의 여러 테이블 대신 중첩된 `INNER JOIN`과 함께 `LEFT JOIN`을 사용하는 이유는 무엇입니까?

SQL 조인: `FROM` 절의 여러 테이블 대신 중첩된 `INNER JOIN`과 함께 `LEFT JOIN`을 사용하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-20 11:06:10369검색

SQL Joins: Why Use `LEFT JOIN` with Nested `INNER JOIN`s Instead of Multiple Tables in the `FROM` Clause?

FROM 절의 SQL 왼쪽 조인 및 다중 테이블 조인: 두 번째 구문

을 권장하는 이유

기존 SQL 언어에서는 WHERE 절과 LEFT JOIN을 통한 조인이 허용되지만, 특히 내부 조인을 수행할 때 LEFT JOIN 구문 사용의 이점을 이해하는 것이 중요합니다.

모호함을 피하세요

최신 데이터베이스에서는 WHERE 절 조건을 사용하여 테이블을 나열하는 전통적인 방법이 더 이상 사용되지 않습니다. 동일한 쿼리에서 내부 조인과 외부 조인을 결합할 때 이 구문이 혼동될 수 있습니다.

예: 모호한 레거시 연결

다음 예를 고려해 보세요.

<code class="language-sql">SELECT *
FROM Company, Department, Employee
WHERE Company.ID = Department.CompanyID
  AND Department.ID = Employee.DepartmentID</code>

이 쿼리는 회사, 부서 및 직원을 나열하기 위해 고안되었습니다. 그러나 쿼리 최적화 프로그램은 Department 테이블과 Employee 테이블 간의 내부 조인을 우선시하도록 선택하여 부서가 없는 회사가 제외될 수 있습니다.

해결책: LEFT JOIN 구문

LEFT JOIN 구문은 연결 순서를 명시적으로 지정하여 이러한 모호성을 해결합니다. 내부 조인을 괄호 안에 배치하고 회사 테이블을 사용하여 왼쪽 조인을 수행하면 이전 쿼리는 다음과 같습니다.

<code class="language-sql">SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID</code>

이 구문을 사용하면 부서가 없는 회사도 포함하여 모든 회사가 포함됩니다.

추가적인 제어 및 유연성

LEFT JOIN 구문은 조인 조건에 대한 추가 제어도 제공합니다. 예를 들어 다음 쿼리는 이름에 문자 "X"가 포함된 부서를 필터링합니다.

<code class="language-sql">SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID AND Department.Name LIKE '%X%'</code>

결론

LEFT JOIN 구문은 내부 조인과 함께 FROM 행에서 테이블을 조인하는 기존 방법에 비해 몇 가지 장점을 제공합니다. 이는 모호성을 제거하고 더 강력한 제어 기능을 제공하며 쿼리 최적화 프로세스를 단순화합니다. 따라서 최신 SQL 애플리케이션에서는 LEFT JOININNER JOIN 사용을 적극 권장합니다.

위 내용은 SQL 조인: `FROM` 절의 여러 테이블 대신 중첩된 `INNER JOIN`과 함께 `LEFT JOIN`을 사용하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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