2011-11-10 21 views
1

我正在尋找一個函數或一些關於如何生成某些元素組合的所有可能組合的想法。MySQL中行的組合

讓我們考慮這些元素存儲在一個表中的列element並且它們是字母。這是一個例子:

id | element 
1 | a 
2 | g 
3 | d 
...| ... 

至於結果,我需要有以下的輸出:

output 
a 
g 
d 
aa 
ag 
ad 
ga 
gg 
gd 
da 
dg 
dd 
aaa 
aag 
aad 
... 

它是使用MySQL可行只,無編程語言?

+0

看看我以前的一個問題:根據您的樣品結果重複了''值http://stackoverflow.com/questions/7031288/php-brute-force-password-generator –

+0

,似乎就像你最終會產生一個無限長的列表一樣。 –

+0

@JoeStefanelli OP必須爲結果指定最大數量的字符,否則你肯定是正確的 –

回答

1

知道你想要的字符,例如最大數量,3,你可以做這樣的:

select distinct concat(t1.element, t2.element, t3.element) as Combination 
from (
    select element from `Test` union all select '' 
) t1 
cross join (
    select element from `Test` union all select '' 
) t2 
cross join (
    select element from `Test` union all select '' 
) t3 
order by length(Combination), Combination 

但是,由於這種方法依賴於創建另一個JOIN(和修改CONCAT語句)爲每你添加的字符的長度,它不能完全動態。

+0

注意:我添加了'DISTINCT'來消除重複項,並修改了'ORDER BY'子句以匹配您所需的輸出。 – RedFilter