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:

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



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

code:

[html]  view plain  copy
  1. select a.*,b.school   
  2. FROM   
  3. (SELECT * FROM mike1.test001) a  
  4. right JOIN  
  5. (SELECT id,school FROM mike1.test003 ) b  
  6. ON a.id=b.id  

结果:


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


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

code:

[sql]  view plain  copy
  1. select a.*,b.school   
  2. FROM   
  3. (SELECT * FROM mike1.test001) a  
  4. inner JOIN  
  5. (SELECT id,school FROM mike1.test003 ) b  
  6. ON a.id=b.id  


结果:



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


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

[sql]  view plain  copy
  1. select a.id,a.name,a.sex,a.age,b.school   
  2. FROM   
  3. (SELECT * FROM mike1.test001) a  
  4. LEFT OUTER join  
  5. (SELECT id,school FROM mike1.test003 ) b  
  6. ON a.id=b.id  
  7. WHERE b.id IS NOT null  

结果:


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

[sql]  view plain  copy
  1. select a.id,a.name,a.sex,a.age,b.school   
  2. FROM   
  3. (SELECT * FROM mike1.test001) a  
  4. LEFT OUTER join  
  5. (SELECT id,school FROM mike1.test003 ) b  
  6. ON a.id=b.id  
  7. WHERE b.id IS  null  
结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值