MySQL 连接与左连接的区别

我有一个跨数据库的查询。

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。我认为,由于没有指定连接的类型,因此它被假定为 LEFT JOIN。不是这样吗?

100451 次浏览

我认为,由于没有指定连接的类型,所以它被假定为一个左连接。不是这样吗?

不,默认的联接是 INNER JOIN。

这里是 SQL 连接的可视化解释

内连接

enter image description here

左连接

enter image description here

没有。如果没有指定类型,则使用 INNER JOIN。用于读取差异; 维基百科

我相信默认值是 INNER JOIN,如果您只指定 JOIN的话。

如果默认情况下您只是在查询中提到 JOIN,那么它将被考虑 作为一个内在的连接。

左连接: 左连接将获取来自 Left 表的所有元素,并且只匹配来自 Right 表的记录,如下所示。 例如:

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

希望这个能帮上忙。