两种情况: 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