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

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

Susan Sarandon
Release: 2024-11-16 13:05:03
Original
458 people have browsed it

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
Copy after login

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
Copy after login

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   |
Copy after login

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      |
Copy after login

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!

source:php.cn
Statement of this Website
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
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template