2014-02-27 46 views
1

对不起,我甚至不知道如何提问,但那是事实。我有一个30行的小桌子。MySQL,为第一列中的每个值重复所有值

我想选择一列中的所有值,并且每个值都带来来自另一列的所有值,并重复。

让我试图表明,小例子,这是我的表和值:

[column color]/[column qtd] 
blue/3 
red/5 
gray/7 
yellow/2 

我想带来一个SELECT查询结果:

blue/3 
blue/5 
blue/7 
blue/2 
red/3 
red/5 
red/7 
red/2 
gray/3 
gray/5 
gray/7 
gray/2 
yellow/3 
yellow/5 
yellow/7 
yellow/2 

它把所有的值从列颜色并将qtd的所有值重复用于每个不同的颜色值。

对不起,这是有点难以解释:(

但感谢。

回答

1

你可以对一个子查询中从同一个表返回DISTINCT qtd执行CROSS JOIN。这将导致从子查询中加入了所有行。到DISTINCT color所有行

SELECT DISTINCT 
    color, 
    q.qtd 
FROM 
    /* Assuming your table is `color` */ 
    color 
    /* CROSS JOIN (like an inner join with no ON clause) */ 
    CROSS JOIN (
    SELECT DISTINCT qtd FROM color 
) q 
ORDER BY color, q.qtd 

这里是一个演示:http://sqlfiddle.com/#!2/42342/3

+0

这是完美的,非常感谢。交叉加入,另一个要学习的东西。谢谢 :) – saulob

1

您似乎希望表中的两个值的所有组合。使用cross joindistinct

select c.color, q.qtd 
from (select distinct color from table t) c cross join 
    (select distinct qtd from table t) q 
相关问题