当前位置 : 主页 > 手机开发 > ROM >

用实例理解自连接

来源:互联网 收集:自由互联 发布时间:2021-06-10
两种情况: 1、根据条件自连接 2、无条件自连接 就是交叉连接,返回被连接的两个表所有数据行的笛卡尔积。 主要是第一种: 设计一张表:t_a 根据a的值自连接 语句:SELECT * FROM "t_

两种情况:

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

网友评论