sql-笛卡尔积
测试页面数据导出时出现一个Bug,导出的数据比页面数据多几条,且有些字段值是乱码。在开发那儿了解到时sql查询的问题,之后仔细了解是笛卡尔积导致的问题
1、什么是笛卡尔积?
笛卡尔积又称为笛卡尔乘积,笛卡尔积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员。
2、笛卡尔积查询语句
在sql中,笛卡尔积又叫cross join , 是两表连接的一种方式,接下来根据查询结果来展示笛卡尔积
有两个表student, subject表,表里面的数据条数是不对应的
-会产生笛卡尔积的查询,这时候sudent表的每条数据都对应了subject表里的两条数据,这就导致了数据重复,
-不会产生笛卡尔积的语句
3、笛卡尔积产生的原因
根据两条查询语句可以知道是缺少了关联条件,解决办法就是加上关联条件。但是在一些特殊的开发需求中,笛卡尔积正好能实现我们的一些需求。
本文来自博客园,作者:临夏1005,转载请注明原文链接:https://www.cnblogs.com/xiaozhan1/p/16976524.html