Mysql加入两个回收表

kfm*_*e04 3 mysql join

假设我有两个表:

zoo_tbl
name
------
dog
cat
monkey
lion
tiger
elephant
fish

palette_tbl
rgb
------
pink
yellow
green
Run Code Online (Sandbox Code Playgroud)

我想在两个表上进行连接,以便rgb行在一个循环中重复.

name       rgb
---------------------
dog        pink
cat        yellow
monkey     green
lion       pink
tiger      yellow
elephant   green
fish       pink
Run Code Online (Sandbox Code Playgroud)

我该如何构建此查询?我有一个想法,在加入之前创建一个带有重复rgb值的大型临时表,但即使我这样做,我也必须在进行连接之前枚举zoo_tbl和临时表.必须有一个更简单/更直接的方法来做到这一点......

Ome*_*esh 5

假设你有一个表的PRIMARY KEY列,这将为你做的伎俩:idpalette_tbl

SELECT name,
       (SELECT rgb FROM palette_tbl WHERE id = @row_id) AS rgb,
       (@row_id:= IF(@row_id = @cnt, 1, @row_id + 1)) AS dummy_id
FROM zoo_tbl a, (SELECT @row_id:= 1, @cnt := (SELECT COUNT(1) FROM palette_tbl)) dummy;
Run Code Online (Sandbox Code Playgroud)

SQLFIDDLE DEMO在这里