Сочетание строк в MySQL - PullRequest
1 голос
/ 10 ноября 2011

Я ищу функцию или какое-то представление о том, как я могу генерировать все возможные комбинации определенного набора элементов.

Давайте рассмотрим, что элементы хранятся в столбце 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 Ответ

1 голос
/ 10 ноября 2011

Зная максимальное количество символов, которое вы хотели, например, 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 (и изменении * 1005)* заявление) для каждого символа, который вы добавляете в длину, он не может быть полностью динамическим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...