mysql如何实现full join以及innterjoin和outer join的区别。

废话不说,先给例子大家看看。

假设有2张表。

a 表和b表, 分别数据如下。

mysql> select * from a;
+——+
| a |
+——+
| 1 |
| 2 |
| 3 |
| 4 |
+——+
4 rows in set (0.00 sec)

mysql> select * from b;
+——+
| b |
+——+
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
+——+
5 rows in set (0.00 sec)

innter join:

mysql> select * from a inner join b on a.a = b.b;
+——+——+
| a | b |
+——+——+
| 3 | 3 |
| 4 | 4 |
+——+——+
2 rows in set (0.00 sec)

innter join 和联合查询 select * from a , b where a.a = b.b;
mysql> select * from a , b where a.a = b.b;
+——+——+
| a | b |
+——+——+
| 3 | 3 |
| 4 | 4 |
+——+——+
2 rows in set (0.00 sec)

left join:

mysql> select * from a left join b on a.a=b.b;
+——+——+
| a | b |
+——+——+
| 1 | NULL |
| 2 | NULL |
| 3 | 3 |
| 4 | 4 |
+——+——+
4 rows in set (0.00 sec)

right join:

mysql> select * from a right join b on a.a=b.b;
+——+——+
| a | b |
+——+——+
| 3 | 3 |
| 4 | 4 |
| NULL | 5 |
| NULL | 6 |
| NULL | 7 |
+——+——+
5 rows in set (0.00 sec)

full join:

mysql> select * from a left join b on a.a=b.b union select * from a right join b on a.a = b.b;
+——+——+
| a | b |
+——+——+
| 1 | NULL |
| 2 | NULL |
| 3 | 3 |
| 4 | 4 |
| NULL | 5 |
| NULL | 6 |
| NULL | 7 |
+——+——+
7 rows in set (0.00 sec)

两个圆相交的未innerjoin

左侧圆 left join (含 inner join 部分)

右侧圆 right join(含 inner join 部分)

两个圆 full join (含leftjoin , right join)join

 

 

此篇文章已被阅读3107 次

Add a Comment

邮箱地址不会被公开。 必填项已用*标注