Home  >  Article  >  Database  >  What's the Key Difference Between MySQL JOIN and LEFT JOIN?

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

Susan Sarandon
Susan SarandonOriginal
2024-11-16 13:05:03391browse

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

Understanding the Difference between MySQL JOIN vs LEFT JOIN

MySQL JOIN is a fundamental operation that combines rows from two or more tables based on a common column. By default, MySQL performs INNER JOINs, which return only the rows that match in all the joined tables.

However, a common misunderstanding arises when users assume that the absence of an explicit join type implies a LEFT JOIN. This is not the case; the default join type remains INNER JOIN.

Example of LEFT JOIN vs INNER JOIN

Consider the following query:

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

This query performs an INNER JOIN on all the tables, returning only the rows that have matching values in all the joined tables.

Now, let's modify the query to use LEFT JOINs:

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

The LEFT JOINs in this query return all the rows from the left table ("Jobs") and only the matching rows from the right tables. This means that even if there is no matching row in the right tables, the row from "Jobs" will still be included in the result.

Visual Representation of Joins

Below are visual representations of INNER JOIN and 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      |

The above is the detailed content of What's the Key Difference Between MySQL JOIN and LEFT JOIN?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn