sql中的笛卡尔积

Posted 静悟生慧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql中的笛卡尔积相关的知识,希望对你有一定的参考价值。

sql中的笛卡尔积

        我们对数据库表进行操作时,经常会对多张表进行关联,多表连接查询大家肯定不会陌生,但是一不小心很容易出来庞大冗余的数据。

 

笛卡尔积数学概念

        笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。

        笛卡尔积又叫笛卡尔乘积,是一个叫笛卡尔的人提出来的。 简单的说就是两个集合相乘的结果。 

        假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

 

 

解决办法

        这样冗余的数据可不是我们想要,所以想要你的结果避免笛卡尔积,既要做到以下几点:

        1.关联范围在最小粒度的列。

        2.如果是三张表连接,并且是1:n:n的关系,就要先关联两张表,然后将两张表关联的结果与第三表在进行关联,这样就可以取得我们想要的结果啦!多张表同理!

 

参考:https://blog.csdn.net/weienjun/article/details/80869478

以上是关于sql中的笛卡尔积的主要内容,如果未能解决你的问题,请参考以下文章

工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)

工作总结之因为笛卡尔积问题写SQL搞了半天[害](附笛卡尔积总结)

SQL 不等式加入返回的笛卡尔积

SQL笛卡尔积查询与关联查询性能对比

SQL - 将行旋转到列并采用笛卡尔积

笛卡尔积请具体解释一下.