用实例理解自连接
Posted xz-404
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用实例理解自连接相关的知识,希望对你有一定的参考价值。
两种情况:
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
以上是关于用实例理解自连接的主要内容,如果未能解决你的问题,请参考以下文章
如何在codeigniter普通mysql和自定义pdo中运行并发数据库连接[重复]