>데이터 베이스 >MySQL 튜토리얼 >MySQL JOIN과 LEFT JOIN의 주요 차이점은 무엇입니까?

MySQL JOIN과 LEFT JOIN의 주요 차이점은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-16 13:05:03459검색

What's the Key Difference Between MySQL JOIN and LEFT JOIN?

MySQL JOIN과 LEFT JOIN의 차이점 이해

MySQL JOIN은 두 개 이상의 테이블 행을 결합하는 기본 작업입니다. 공통 열. 기본적으로 MySQL은 조인된 모든 테이블에서 일치하는 행만 반환하는 INNER JOIN을 수행합니다.

그러나 사용자가 명시적인 조인 유형이 없으면 LEFT JOIN을 의미한다고 가정하면 일반적인 오해가 발생합니다. 이것은 사실이 아닙니다. 기본 조인 유형은 INNER JOIN으로 유지됩니다.

LEFT JOIN과 INNER JOIN의 예

다음 쿼리를 고려하세요.

SELECT
    `DM_Server`.`Jobs`.*,
    `DM_Server`.servers.Description AS server,
    digital_inventory.params,
    products.products_id,
    products.products_pdfupload,
    customers.customers_firstname,
    customers.customers_lastname
FROM `DM_Server`.`Jobs`
    INNER JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
    JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
    JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
    JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

이 쿼리는 다음을 수행합니다. 모든 테이블에 대해 INNER JOIN을 실행하여 조인된 모든 테이블에서 일치하는 값이 있는 행만 반환합니다.

이제 LEFT JOIN을 사용하도록 쿼리를 수정해 보겠습니다.

SELECT
    `DM_Server`.`Jobs`.*,
    `DM_Server`.servers.Description AS server,
    digital_inventory.params,
    products.products_id,
    products.products_pdfupload,
    customers.customers_firstname,
    customers.customers_lastname
FROM `DM_Server`.`Jobs`
    LEFT JOIN `DM_Server`.servers ON servers.ServerID = Jobs.Jobs_ServerID
    LEFT JOIN `cpod_live`.`digital_inventory` ON digital_inventory.jobname = Jobs.Jobs_Name
    LEFT JOIN `cpod_live`.`products` ON products.products_pdfupload = CONCAT(digital_inventory.jobname, ".pdf")
    LEFT JOIN `cpod_live`.`customers` ON customers.customers_id = products.cID
ORDER BY `DM_Server`.`Jobs`.Jobs_StartTime DESC LIMIT 50

LEFT 이 쿼리의 JOIN은 왼쪽 테이블("Jobs")의 모든 행과 오른쪽 테이블의 일치하는 행만 반환합니다. 즉, 올바른 테이블에 일치하는 행이 없더라도 "작업"의 행이 결과에 계속 포함됩니다.

조인의 시각적 표현

다음은 INNER JOIN 및 LEFT JOIN의 시각적 표현입니다.

INNER JOIN:

              TABLE 1               TABLE 2
+-----------+------+  +-----------+------+
| Column 1  | KEY  |  | Column 3  | KEY  |
+-----------+------+  +-----------+------+
| ROW 1.1   | 1    |  | ROW 2.1   | 1    |
| ROW 1.2   | 2    |  |           |      |
|           |      |  | ROW 2.2   | 2    |
+-----------+------+  +-----------+------+

Result:
| Column 1 | Column 3 |
+-----------+-----------+
| ROW 1.1   | ROW 2.1   |
| ROW 1.2   | ROW 2.2   |

LEFT JOIN:

              TABLE 1               TABLE 2
+-----------+------+  +-----------+------+
| Column 1  | KEY  |  | Column 3  | KEY  |
+-----------+------+  +-----------+------+
| ROW 1.1   | 1    |  | ROW 2.1   | 1    |
| ROW 1.2   | 2    |  |           |      |
| ROW 1.3   | 3    |  |           |      |
+-----------+------+  +-----------+------+

Result:
| Column 1 | Column 3 |
+-----------+-----------+
| ROW 1.1   | ROW 2.1   |
| ROW 1.2   | NULL      |
| ROW 1.3   | NULL      |

위 내용은 MySQL JOIN과 LEFT JOIN의 주요 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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