mysql何时使用LEFT JOIN以及何时使用INNER JOIN?

时间:2017-07-28
本文章向大家介绍何时使用LEFT JOIN以及何时使用INNER JOIN?需要的朋友可以参考一下。

如果只希望两个表中显示的结果与Join条件匹配,请使用内部联接。

如果需要表A中的所有结果,请使用左连接,但如果表B具有与表A的某些记录相关的数据,则您还希望在同一查询中使用该数据。

如果需要两个表中的所有结果,请使用完全连接。

INNER JOIN只返回两个表中匹配值的行,而LEFT JOIN将返回LEFT表中的所有行,即使RIGHT表中没有匹配的行也是如此

一个简单的例子

TableA
ID   Value
1    TableA.Value1
2    TableA.Value2
3    TableA.Value3

TableB
ID   Value
2    TableB.ValueB
3    TableB.ValueC

INNER JOIN产生:

SELECT a.ID,a.Value,b.ID,b.Value 
FROM TableA a INNER JOIN TableB b ON b.ID = a.ID

a.ID    a.Value            b.ID    b.Value
2       TableA.Value2      2       TableB.ValueB
3       TableA.Value3      3       TableB.ValueC

LEFT JOIN产生:

SELECT a.ID,a.Value,b.ID,b.Value 
FROM TableA a LEFT JOIN TableB b ON b.ID = a.ID

a.ID    a.Value            b.ID    b.Value
1       TableA.Value1      NULL    NULL
2       TableA.Value2      2       TableB.ValueB
3       TableA.Value3      3       TableB.ValueC

如您所见,LEFT JOIN包含TableA中ID = 1的行,即使TableB中没有匹配的行ID = 1,而INNER JOIN特别排除了行,因为TableB中没有匹配的行