JOIN详解

来源:互联网 发布:网络投稿小说网站 编辑:程序博客网 时间:2024/06/07 04:02

JOIN详解

SQL中JOIN有多种:JOIN、INNER JOIN、FULL JOIN、FULL OUTER JOIN、LEFT JOIN、LEFT OUTER JOIN、RIGHT JOIN、LEFT OUTER JOIN。
同时不还要注意ON ,WHERE等条件使用。

注:
1、只有 FULL JOIN 完全强制连接顺序
2、大多数 LEFT JOIN 或 RIGHT JOIN 都可以在某种程度上重新排列
3、LEFT JOIN就是左表为基表,全部显示。RIGHT JOIN相反


详解:
JOIN与INNER JOIN:
join是自然连接,对两张表中字段名和数据类型都相同的字段进行等值连接,并返回符合条件的结果;
inner join是内连接,显示符合连接条件的记录,连接条件已经指明了;
两个连接的结果集数据是一样的,只是顺序不同。这里需要注意join的时候和inner join连接时使用的连接条件是不一样的,所以在结果中记录出现的顺序会有所不同,但两个结果结合是一样的

FULL JOIN 或 FULL OUTER JOIN 
完整外部联接将返回左表和右表中的所有行。当某一行在另一个表中没有匹配行时,另一个表的选择列表列将包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 

LEFT JOIN 或 LEFT OUTER JOIN 
左向外部联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行在右表中没有匹配行,则在关联的结果集行中,来自右表的所有选择列表列均为空值。 

RIGHT JOIN 或 RIGHT OUTER JOIN 
右向外部联接是左向外部联接的反向联接。将返回右表的所有行。如果右表的某一行在左表中没有匹配行,则将为左表返回空值。

ON和WHERE区别:
以left join为例
ON会以左表的基准数据,凡左表出现的数据均要出现,然后再进行join右表,只要关联上的就需要查出来,如果相应的字段没有值或不符合条件的话就置为NULL。

WHERE:会再关联结果上进行过滤。

ON与WHERE先后顺序:先ON过滤,再关联,最后WHERE过滤。





0 0
原创粉丝点击