我有这个跨数据库查询......
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。我认为通过不指定连接类型,它被假定为LEFT JOIN
。情况不是这样吗?
答案 0 :(得分:167)
我认为通过不指定连接类型,它被假定为LEFT JOIN。情况不是这样吗?
不,默认联接是INNER JOIN。
这是a visual explanation of SQL joins。
内部联接
左连接
答案 1 :(得分:13)
没有。如果未指定类型,则使用INNER JOIN
。阅读差异; wikipedia
答案 2 :(得分:9)
如果您只指定INNER JOIN
,我相信默认值为JOIN
。
答案 3 :(得分:8)
如果你刚才在查询中提到JOIN,则会考虑 作为INNER JOIN。
左连接:左连接将获取Left表中的所有元素,并且仅将Right表中的记录匹配为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
希望这有帮助。