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)
此篇文章已被阅读3107 次