首页 > 其他 > 详细

用实例理解自连接

时间:2019-03-08 12:24:45      阅读:146      评论:0      收藏:0      [点我收藏+]

两种情况:

1、根据条件自连接

2、无条件自连接 就是交叉连接,返回被连接的两个表所有数据行的笛卡尔积。

主要是第一种:

设计一张表:t_a

根据a的值自连接  语句:SELECT * FROM "t_a" ta,t_a tb where ta.a=tb.a

原本我由于没有考虑到有些a列里可以有重复值,因此以为数据行数和t_a表的行数相同。如以下这种情况:

①a列里没有重复值:

技术分享图片

结果:

技术分享图片

②a列里有重复值

技术分享图片

结果:共41条记录,太长,不全贴出来了。

技术分享图片

 

6*6+2*2+1*1=41

 

同理可以推出按照多个条件自连接的结果

如SELECT * FROM "t_a" ta,t_a tb where ta.a=tb.a and ta.b=tb.b的情况。这里情况应是9条,因为没有ab都是相同值的情况

技术分享图片

若是存在ab相同时比如表中数据如下

技术分享图片

 

,会出现3*3+2*2+4=17条结果

技术分享图片

同时自连接的作用可以参考别人的博客:https://blog.csdn.net/weiwanampdaixu/article/details/78292053

 

用实例理解自连接

原文:https://www.cnblogs.com/xz-404/p/10494982.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!