首页 新闻 搜索 专区 学院

select * from tableA inner join tableB;

0
[已解决问题] 解决于 2017-06-13 09:39

今天面试,一个四十岁左右的老程序员问我select * from tableA inner join tableB的结果是什么?我说是一个笛卡尔集,他说不对。当时我开始怀疑自己了,但是回来验证了下,tableA有4条数据,tableB有12条数据查询后,得到48条数据。我说是一个笛卡尔集有问题吗?请大神指教。

ckx0709的主页 ckx0709 | 菜鸟二级 | 园豆:392
提问于:2016-11-08 22:24
< >
分享
最佳答案
0

就是笛卡尔乘积。语句只join,没on

和select * from tablea,tableb一个意思

奖励园豆:5
czd890 | 大侠五级 |园豆:8893 | 2016-11-09 10:54
其他回答(6)
0

不对,你这算是蒙对了一半,笛卡尔是交叉连接,你这个是内部连接!

Jeffcky | 园豆:2563 (老鸟四级) | 2016-11-08 22:47

 哥,我知道这是内部链接。他问的是结果是什么?没问我属于你手中连接。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-12 11:06
0

没毛线不对啊。别人问的是结果是什么,笛卡尔集是结果啊。

Daniel Cai | 园豆:10374 (专家六级) | 2016-11-09 00:10
0

测试是2个表有关联数据,否则2个表虽然有关联,但是数据对应不上的话,inner join就不会有数据,但是cross join就有是你上面的结果。

清海扬波 | 园豆:852 (小虾三级) | 2016-11-09 10:41

 刚测试了一下,完全没有关联的两张表,也可以用inner join,结果也是笛卡尔集。亲测。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-18 21:56
0

我只想弱弱地问一句,后面没有on关键字不会报错吗?

~扎克伯格 | 园豆:1837 (小虾三级) | 2016-11-09 11:05

 亲测,不会。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-12 11:07
0

tableA有4条数据,tableB有12条数据查询后,得到48条数据?

inner join 不是一般只会得到12条数据么。

爱编程的大叔 | 园豆:30663 (高人七级) | 2016-11-09 11:05

 这是在有on条件的情况下。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-12 11:07
0

有语法错误,

悦光阴 | 园豆:2239 (老鸟四级) | 2016-11-09 14:22

 亲测,没有。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-12 11:08

@小沙弥图图: inner join 不是必须带有on子句吗?

支持(0) 反对(0) 悦光阴 | 园豆:2239 (老鸟四级) | 2016-11-12 18:44

@悦光阴: 不是必须条件,可以不带。

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-13 20:22

@小沙弥图图: 版本是2008,我这里测试并不行,你那边是什么版本

 

 

 

支持(0) 反对(0) 二月二十号 | 园豆:46 (初学一级) | 2016-11-18 10:52

@二月二十号: 不好意思,最近忙刚看到,我用的是MySQL5.1

支持(0) 反对(0) ckx0709 | 园豆:392 (菜鸟二级) | 2016-11-18 21:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册