MySQL 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 s。 我认为通过不指定一种types的连接,它被认为是一个LEFT JOIN 。 不是这样吗?

我认为通过不指定一种types的连接,它被认为是一个左连接。 不是这样吗?

不,默认连接是INNER JOIN。

这里是SQL连接的视觉解释 。

内部联接

在这里输入图像描述

左连接

在这里输入图像描述

不。当没有指定types时,使用INNER JOIN 。 阅读差异; 维基百科

如果你只是指定JOIN我相信默认是INNER JOIN JOIN

如果你刚才在默认的查询中提到了JOIN,它将被视为INNER JOIN。

左连接:左连接将从左表中获取所有元素,并将右表中的logging与Follows匹配。 例:

 SELECT column_name(s) FROM table_name1 #(Left table) LEFT JOIN table_name2 #(Right table) ON table_name1.column_name=table_name2.column_name 

希望这可以帮助。