2014-02-27 78 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 
相關問題