一、外连接
外联接可以是左向外联接、右向外联接或完整外部联接。
1,左外连接(left join or left outer join)
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
e.g.
2,右外连接(right join or right outer join)
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值
3,完全连接(full join or full outer join)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
二,内连接
[b] 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。[/b]内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。
参考[url]http://www.51cto.com/art/200601/20106.htm[/url]
外联接可以是左向外联接、右向外联接或完整外部联接。
1,左外连接(left join or left outer join)
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。
e.g.
SELECT i.*, c.country_name, s.state_name FROM jos_vm_agent_info i
left JOIN jos_vm_country c ON (i.country=c.country_3_code OR i.country=c.country_2_code)
LEFT JOIN jos_vm_state s ON (i.state=s.state_2_code AND s.country_id=c.country_id)
WHERE i.user_id = 380
2,右外连接(right join or right outer join)
右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值
3,完全连接(full join or full outer join)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
二,内连接
[b] 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。[/b]内联接消除与另一个表中的任何行不匹配的行。而外联接会返回 FROM 子句中提到的至少一个表或视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外部联接中两个表的所有行都将返回。
参考[url]http://www.51cto.com/art/200601/20106.htm[/url]