mysql的三种连接方式

时间:2023-03-10 01:58:01
mysql的三种连接方式
SQL的三种连接方式分为:左外连接、右外连接、内连接,专业术语分别为:LEFT JOIN、RIGHT JOING、INNER JOIN
内连接INNER JOIN:使用比较运算符来根据指定的连接的每个表都有的列的值来进行匹配连接,如果对应的列值不存在,则连接的所有表对应的该列值都不会进行连接,也就是说都会别抛弃;

#####   举个例子

-------------------------------------------------
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系
//进行INNER JOIN

SELECT * FROM (a INNER JOIN b ON a.id=b.parent_id); 最终输出的结果为:

a.id a.name b.id b.job b.parent_id

1 张三 1 23 1

2 李四 2 34 2

//因为a.id=3在b中不存在对应的值,b.parent_id=4再a中也不存在,因此都被抛弃

   左外连接LEFT JOIN/LEFT OUTTER JOIN:如果左表的某行在右表中没有找到对应的匹配项,那么左表该行在连接表中对应的右表数据都为null;而右表中的某行在坐标中没有找到对应的匹配项,就被抛弃
   举个例子
-------------------------------------------------
a表 id name b表 id job parent_id
1 张3 1 23 1
2 李四 2 34 2
3 王武 3 34 4
a.id同parent_id 存在关系 -------------------------------------------------- //进行LEFT JOIN
SELECT * FROM (a LEFT JOIN b ON a.id=b.parent_id); 最终输出的结果为:
a.id a.name b.id b.job b.parent_id
1 张三 1 23 1
2 李四 2 34 2
3 王五 null null null //因为a.id=3在b中不存在对应的值,所以对于左外连接来说该行对应的右表中的数据的值都为null

#####    右外连接RIGHT JOIN/RIGHT OUTTER JOIN: 与左外连接类似,只不过是右表对应的数据在左表中没有找到匹配项,该行对应的左表数据就被设置为null,左表对应的数据在右表中没有找到匹配项,就被抛弃,例子就不列举了


##### 文章摘自:http://www.blogjava.net/zolly/archive/2007/10/23/SQLJION.html
                        </div>