1

就像标题说的那样,我想加入 2 个没有比较键的表。

没有键的mysql连接表

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

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就可以实现这样的事情吗?

4

1 回答 1

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)

演示

请注意,这假设 table1 中的形容词总是比 table2 中的名词多。如果您需要让任一表更小,则需要使用full outer join. 正如 Andriy M 所提到的,MySQL 对此没有内置支持,但如果您搜索 SO 或 google,您应该找到对其进行编码的方法。

于 2013-08-16T09:12:18.577 回答