标签:
转自:http://blog.csdn.net/jz20110918/article/details/41806611
假设我们有两张表。Table A 是左边的表。Table B 是右边的表。其各有四条记录,其中有两条记录name是相同的,如下所示:让我们看看不同JOIN的不同
A表 | |
id | name |
1 | Pirate |
2 | Monkey |
3 | Ninja |
4 | Spaghetti |
B表 | |
id | name |
1 | Rutabaga |
2 | Pirate |
3 | Darth Vade |
4 | Ninja |
1.INNER JOIN
SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
3 | Ninja | 4 | Ninja |
Inner join 产生的结果集中,是A和B的交集。
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
2 | Monkey | null | null |
3 | Ninja | 4 | Ninja |
4 | Spaghetti | null | null |
null | null | 1 | Rutabaga |
null | null | 3 | Darth Vade |
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |
null | null | 1 | Rutabaga |
null | null | 3 | Darth Vade |
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
1 | Pirate | 2 | Pirate |
2 | Monkey | null | null |
3 | Ninja | 4 | Ninja |
4 | Spaghetti | null | null |
结果集 | |||
(TableA.) | (TableB.) | ||
id | name | id | name |
2 | Monkey | null | null |
4 | Spaghetti | null | null |
产生在A表中有而在B表中没有的集合。
新结果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Darth Vade |
新结果集 |
name |
Pirate |
Monkey |
Ninja |
Spaghetti |
Rutabaga |
Pirate |
Darth Vade |
Ninja |
全部列出来
(3)注意:
新结果集 | |
id | name |
1 | Pirate |
2 | Monkey |
3 | Ninja |
4 | Spaghetti |
1 | Rutabaga |
2 | Pirate |
3 | Darth Vade |
4 | Ninja |
图解SQL的inner join、left join、right join、full outer join、union、union all的区别
标签:
原文地址:http://www.cnblogs.com/zdfjf/p/5206616.html