Den Unterschied zwischen MySQL JOIN und LEFT JOIN verstehen
MySQL JOIN ist eine grundlegende Operation, die Zeilen aus zwei oder mehr Tabellen basierend auf a kombiniert gemeinsame Spalte. Standardmäßig führt MySQL INNER JOINs aus, die nur die Zeilen zurückgeben, die in allen verknüpften Tabellen übereinstimmen.
Es kommt jedoch zu einem häufigen Missverständnis, wenn Benutzer davon ausgehen, dass das Fehlen eines expliziten Join-Typs einen LEFT JOIN impliziert. Dies ist nicht der Fall; Der Standard-Join-Typ bleibt INNER JOIN.
Beispiel für LEFT JOIN vs. INNER JOIN
Betrachten Sie die folgende Abfrage:
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
Diese Abfrage wird ausgeführt ein INNER JOIN für alle Tabellen, der nur die Zeilen zurückgibt, die übereinstimmende Werte in allen verbundenen Tabellen haben.
Jetzt ändern wir die Abfrage, um LEFT JOINs zu verwenden:
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 dieser Abfrage geben alle Zeilen aus der linken Tabelle („Jobs“) und nur die passenden Zeilen aus den rechten Tabellen zurück. Das heißt, auch wenn in den richtigen Tabellen keine passende Zeile vorhanden ist, wird die Zeile aus „Jobs“ dennoch in das Ergebnis einbezogen.
Visuelle Darstellung von Joins
Unten finden Sie visuelle Darstellungen von INNER JOIN und 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 |
Das obige ist der detaillierte Inhalt vonWas ist der Hauptunterschied zwischen MySQL JOIN und LEFT JOIN?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!