기술나눔

MySQL: 왼쪽 조인 이후 또는 어디에 사용합니까?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

MySQL에서는LEFT JOIN 오른쪽 테이블에 일치하는 레코드가 없더라도 왼쪽 테이블(즉, LEFT JOIN 키워드의 왼쪽에 있는 테이블)의 모든 레코드를 반환하는 데 사용됩니다. 오른쪽 테이블에서 일치하지 않는 레코드의 경우 결과 집합의 오른쪽 테이블 부분이 NULL로 채워집니다.~에 대한ON그리고WHERE절의 사용은 다음과 같습니다.LEFT JOIN의 역할은 다릅니다.

  • 절: 조인 조건을 정의하는 데 사용됩니다. 즉, 어떤 레코드를 함께 조인해야 하는지 결정합니다.왼쪽 테이블과 오른쪽 테이블의 특정 필드 값 간의 관계를 기반으로 레코드를 결합해야 하는 경우 이러한 조건을 배치해야 합니다.ON 나중에.만약에ON나중에 오른쪽 테이블에 추가 조건부 제한이 있으며 이는 연결 시에도 적용되지만 왼쪽 테이블의 모든 레코드를 반환하는 원칙에는 영향을 미치지 않습니다.
  • 어디 조항: 통과한 쌍에 사용됨JOIN 작업에 의해 생성된 결과 집합이 추가로 필터링됩니다.조건을 걸면WHERE절을 사용하면 조건을 충족하지 않는 레코드(왼쪽 테이블이든 오른쪽 테이블이든)가 제거되며, 이는 특히 NULL 값을 처리할 때 왼쪽 테이블의 모든 레코드를 반환하려는 원래 의도에 영향을 미칠 수 있습니다. 각별히 조심하세요.

구체적인 사례 1:

두 개의 테이블이 있다고 가정합니다. 하나는employees(직원 테이블), 다른 하나는departments(부서 테이블)에서는 일부 직원이 특정 부서에 배정되지 않은 경우에도 모든 직원과 해당 부서 이름을 알고 싶습니다.

직원 테이블:

ID이름
1앨리스
2단발
3축가

부서 테이블:

ID이름
1인사부
2그것
3마케팅

안에,employees테이블department_id필드는 할당된 부서가 없음을 나타내는 NULL일 수 있습니다.

ON 사용 예:

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;