没有键/索引的MYSQL连接表

时间:2013-08-16 09:05:26

标签: mysql sql join

就像标题所说,我想加入2个没有钥匙的表来比较。

mysql join tables without keys

这个例子描述了最初的情况,但他正在寻找笛卡尔积。 我想要这样的东西

Table 1: t1
red
blue
big
small


Table 2: t2
cat
dog
person

结果应如下所示:

red cat
blue dog
big person
small NULL <--- can be empty (not shown)

这样的事情只能用sql吗?

1 个答案:

答案 0 :(得分:4)

由于MySQL没有ROW_ID()函数,你必须用你增加的用户变量伪造它:

select adjective, noun
from (select @counter1 := @counter1+1 as counter, adjective
      from table1, (select @counter1 := 0) init) t1
left join (select @counter2 := @counter2+1 as counter, noun
           from table2, (select @counter2 := 0) init) t2
using (counter)

DEMO

请注意,这假设table1中的形容词总是比table2中的名词更多。如果您需要允许任何一个表更小,则需要使用full outer join。正如Andriy M所提到的,MySQL没有内置的支持,但是如果你搜索SO或谷歌,你应该找到编码它的方法。