了解MySQL 中的JOIN 與LEFT JOIN
MySQL 的JOIN 操作允許我們透過指定多個資料表之間的公用列來組合來自多個表的資料。但是,了解各種連接類型之間的差異至關重要,特別是 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` 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
查詢執行錯誤LEFT JOIN
當您嘗試轉換所有INNER JOIN 時如果在查詢中使用LEFT JOIN,則可能會遇到錯誤。這是因為,預設情況下,當未指定明確連線類型時,MySQL 使用 INNER JOIN。 LEFT JOIN 必須使用「LEFT JOIN」關鍵字明確指定。
預設聯接類型
與普遍看法相反,MySQL 中的預設聯結類型不是 LEFT JOIN但內連接。內部聯結僅傳回在查詢涉及的所有資料表的聯接列中具有符合值的行。
聯接的視覺表示
為了更好地理解 INNER 和 INNER 之間的區別JOIN 和 LEFT JOIN,考慮以下視覺效果表示:
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 2 | C2 | D2 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1
Table 1 | Column A | Column B --------+---------+--------- 1 | A1 | B1 2 | A2 | B2 Table 2 | Column C | Column D --------+---------+--------- 1 | C1 | D1 Result: | Column A | Column B | Column C | Column D | |---|---|---|---| | A1 | B1 | C1 | D1 | A2 | B2 | NULL | NULL
如你所見, LEFT JOIN 包括左表(表 1)中的所有行,並在存在匹配時將它們與右表(表 2)中的行進行匹配。如果沒有符合項,則缺失列將包含 NULL 值。
以上是MySQL 中的預設 JOIN 類型是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!