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
希望这可以帮助。