如何避免笛卡尔连接

sinxy sinxy 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一条SQL语句
select aa.col1,aa.col2,aa.col3, ... ,bb.col1,bb.col2 from table1 aa,table2 bb
where aa.ID = bb.ID


现在的逻辑是要取出和它条件相反的纪录,即table1.ID 不等于 table2.ID 的纪录
我写的SQL是
select aa.col1,aa.col2,aa.col3, ... ,bb.col1,bb.col2 from table1 aa,table2 bb
where aa.ID not in (Select ID from table2)


但是这样取的话,就出现了笛卡尔积,虽然取出了纪录,但是纪录总数目是正确情况的count倍(count为table2的纪录数)

请问该怎样写这条SQL,避免笛卡尔积。
...全文

相关推荐

Orcale数据库全方面学习-第四课

很详细的Orcle 学习资料,从基础开始结合图片文字。 资料较权威。希望对朋友们有帮助

Yvon_寒笙

笛卡尔积测试案例原理分析

简单的从笛卡尔积的原理上看,直观的感觉认为一个乘法处理,不会产生多大的性能问题。 而实际情况中,一个系统中的大型表,记录数达到几百万甚至上千万的以及很常见了。即便几十万行数据量的数据量,也是非常普遍

f_302

笛卡尔积与自然连接区别[代码]

本文详细介绍了笛卡尔积(×)和自然连接(⋈)在数据库和关系代数中的区别。笛卡尔积是两个关系(表)的所有可能组合,结果行数是两个表行数的乘积,列数是两个表列数的总和,通常会产生庞大的结果集。自然连接则是基于两个表中相同的列进行连接,自动匹配相同名称和含义的列,并去除重复列,仅返回匹配的行。文章还总结了两种操作的特性和典型用途,指出笛卡尔积适用于需要所有可能组合的场景,而自然连接更高效,常用于关联表并返回相关数据。

blockchain9miner

MySQL表连接查询

MySQL表连接查询 1 基本格式 select fieldName from tbName1 连接符 tbName2 on 条件 2 笛卡尔乘积【避免】 -- 笛卡尔乘积,没有约束条件,数据库匹配发生相乘关系,结果也不是预期结果 -- 无意义结果 select employee_id, first_name from t_employees inner join t_jobs; 3 内连接查询 inner join on 两张表 -- 查询所有部门部门名,和对应的员工信息id和first_name select t_departments.department_name,

weixin_38686231

cartesian-product-sas:SAS中的笛卡尔积

笛卡尔乘积 SAS中的笛卡尔积 如果你像我,那你可能永远都做不到

xrxiong
评论 11
收藏 已收藏
分享
返回顶部
sinxy
MS-SQL Server 34,876 成员 254,635 内容