3

假设我有两张桌子:

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

palette_tbl
rgb
------
pink
yellow
green

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

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

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

4

1 回答 1

5

假设您在tablePRIMARY 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 回答