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

来源:互联网 发布:java并发编程 pdf 编辑:程序博客网 时间:2024/06/01 10:08

         学习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) aLEFT JOIN(SELECT id,school FROM mike1.test003 ) bON a.id=b.id
结果如下:以表1为根基,对表2进行连接,匹配相同的id号



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

code:

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

结果:


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


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

code:

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


结果:



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


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

select a.id,a.name,a.sex,a.age,b.school FROM (SELECT * FROM mike1.test001) aLEFT OUTER join(SELECT id,school FROM mike1.test003 ) bON a.id=b.idWHERE 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) aLEFT OUTER join(SELECT id,school FROM mike1.test003 ) bON a.id=b.idWHERE b.id IS  null
结果:






0 0
原创粉丝点击