cross join的用法及注意事项

        最近遇到一个面试题,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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值