如果只希望两个表中显示的结果与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中没有匹配的行