cross join的用法及注意事项

本文解析了SQL中CROSSJOIN的含义及其与笛卡尔积的关系,通过实例说明了如何在不加条件的情况下实现两表所有可能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        最近遇到一个面试题,A表存了500条数据,B表存35条数据,请问使用cross join查询的结果是多少条数据。嗯....原谅我从业也有大几年了,从来没见过这个。本着不会就要学的态度,我老老实实去写了一条sql语句,是这样的:select  * from a cross join b on a.id=b.id 当时在sql server中操作on还报了语法错误,当时没细想,直接把on 换成了where,经验告诉我所有的联表查询都是应该加条件的,查出来结果,嗯...当然跟其他联表查询没什么区别。

        后来发现不是这样的,又仔细查了查,CROSS JOIN,微软给出的定义是这样的:The CROSS JOIN operator can be used to combine all the records in one data set to all the records in another data set. By using the CROSS JOIN operator between two sets of records you are creating what is known as a Cartesian product.(CROSS JOIN运算符可以把一个数据集中和另外一个数据集中的数据组合在一起。在两个数据集之间使用CROSS JOIN运算符产生的结果也被称为笛卡尔积。)语法是这样的:SELECT * FROM A CROSS JOIN B。哦,原来是不用加条件的,加了条件就跟inner/outer join没区别了。正确的SELECT * FROM A CROSS JOIN B的结果应该是A表数据数量*B表数据数量,就是求表A和表B的所有可能的组合。

 

 

 

        

 

 

        

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值