MySQL中的行组合

时间:2011-11-10 17:07:14

标签: mysql sql database mysqli

我正在寻找一个函数或一些关于如何生成某些元素集的可能组合的想法。

让我们考虑元素存储在表格中的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而不使用编程语言是否可行?

1 个答案:

答案 0 :(得分: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语句),所以它不能完全是动态的。