今天面试,一个四十岁左右的老程序员问我select * from tableA inner join tableB的结果是什么?我说是一个笛卡尔集,他说不对。当时我开始怀疑自己了,但是回来验证了下,tableA有4条数据,tableB有12条数据查询后,得到48条数据。我说是一个笛卡尔集有问题吗?请大神指教。
就是笛卡尔乘积。语句只join,没on
和select * from tablea,tableb一个意思
不对,你这算是蒙对了一半,笛卡尔是交叉连接,你这个是内部连接!
哥,我知道这是内部链接。他问的是结果是什么?没问我属于你手中连接。
没毛线不对啊。别人问的是结果是什么,笛卡尔集是结果啊。
测试是2个表有关联数据,否则2个表虽然有关联,但是数据对应不上的话,inner join就不会有数据,但是cross join就有是你上面的结果。
刚测试了一下,完全没有关联的两张表,也可以用inner join,结果也是笛卡尔集。亲测。
我只想弱弱地问一句,后面没有on关键字不会报错吗?
亲测,不会。
tableA有4条数据,tableB有12条数据查询后,得到48条数据?
inner join 不是一般只会得到12条数据么。
这是在有on条件的情况下。
有语法错误,
亲测,没有。
@小沙弥图图: inner join 不是必须带有on子句吗?
@悦光阴: 不是必须条件,可以不带。
@小沙弥图图: 版本是2008,我这里测试并不行,你那边是什么版本
@二月二十号: 不好意思,最近忙刚看到,我用的是MySQL5.1