就像标题说的那样,我想加入 2 个没有比较键的表。
这个例子描述了初始情况,但他正在寻找笛卡尔积。我想要这样的东西
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就可以实现这样的事情吗?
就像标题说的那样,我想加入 2 个没有比较键的表。
这个例子描述了初始情况,但他正在寻找笛卡尔积。我想要这样的东西
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就可以实现这样的事情吗?
由于 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,您应该找到对其进行编码的方法。