3

2 つのテーブルがあるとします。

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

palette_tbl
rgb
------
pink
yellow
green

RGB 行がサイクルで繰り返されるように、2 つのテーブルを結合したいと考えています。

name       rgb
---------------------
dog        pink
cat        yellow
monkey     green
lion       pink
tiger      yellow
elephant   green
fish       pink

このクエリを作成するにはどうすればよいですか? 結合する前に、rgb 値が繰り返される大きな一時テーブルを作成することを考えていますが、その場合でも、結合を行う前に、zoo_tbl と一時テーブルを列挙する必要があります。これを行うには、より簡単で直接的な方法が必要です...

4

1 に答える 1

5

table の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;

SQLFIDDLE デモはこちら

于 2012-08-24T11:50:30.220 に答える