mysql中交集,并集,差集,左连接,右连接

         学习mysql也有一个月啦,在这个月中,都是按照需求对数据表进行一些基本操作,在这个过程当中,经常使用到左连接,右连接,交集,取差集等,现在对其基本操作进行归纳总结。

数据源:

表一:                                                           

id    name     sex age                            

1 mike1男  34                               
1 mike2 23                             
1 mike3 24                               
2 mike1 46                               
2 mike2 35
2 mike3 42
2 mike4 62
3 mike1 45
4 mike5 72
5 mike4 23


    表二:

id  school

1   北京大学

2  清华大学

3  哈佛大学

7  MIT



左连接:根据某个等值条件,对表进行连接。本实验是在id相同的情况下进行左连接

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
结果如下:以表1为根基,对表2进行连接,匹配相同的id号



右连接:以表2为根基,通过id相同的字段对其进行右连接。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
right JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id

结果:


你们觉得结果是有问题还是没有问题呢?  请留言


交集:通过id号相同,对表1和表2进行内连接,取相同的部分,不相同的部分省略掉。

code:

select a.*,b.school 
FROM 
(SELECT * FROM mike1.test001) a
inner JOIN
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id


结果:



差集:差集用的还是比较多的,类似于我们数学中学的,交、合、并等集合的操作。


code1:取表2与表1相同的部分,是我们上面取交集的第二种方法。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS NOT null

结果:


code2:取表1中的id在表2中的id的差值,最后列出数据。

select a.id,a.name,a.sex,a.age,b.school 
FROM 
(SELECT * FROM mike1.test001) a
LEFT OUTER join
(SELECT id,school FROM mike1.test003 ) b
ON a.id=b.id
WHERE b.id IS  null
结果:






猜你喜欢

转载自blog.csdn.net/Mikefei007/article/details/53888100