假设我有两个表:
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和临时表.必须有一个更简单/更直接的方法来做到这一点......
假设你有一个表的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)