如何在 m 列中生成 n 行的排列或组合?

Posted

技术标签:

【中文标题】如何在 m 列中生成 n 行的排列或组合?【英文标题】:How to generate a permutations or combinations of n rows in m columns? 【发布时间】:2011-05-08 18:12:22 【问题描述】:

有谁知道如何从 n 行的表中创建一个包含 m 列的表,其中每行的列中的值代表原始表中值的不同组合或排列?

例如,原始表有 1 列 (number_value) 和 3 (n=3) 行:

1
2
3

包含两个值 (m = 2) 的组合(顺序无关紧要)的表格如下:

number1, number2
1,2
1,3
2,3

排列表如下:

number1, number2
1, 2
2, 1
1, 3
3, 1
2, 3
3, 2

行的顺序无关紧要。

提前谢谢你!

【问题讨论】:

【参考方案1】:

组合:

SELECT T1.x, T2.x
FROM your_table T1
JOIN your_table T2
ON T1.x < T2.x

排列:

SELECT T1.x, T2.x
FROM your_table T1
JOIN your_table T2
ON T1.x != T2.x

我假设原始表中的值是唯一的。

要概括更大的 m 值,您需要添加更多连接。

【讨论】:

以上是关于如何在 m 列中生成 n 行的排列或组合?的主要内容,如果未能解决你的问题,请参考以下文章

如何从所有排列中生成所有可能的组合?

如何在 Java 中生成随机排列?

如何在 PHP 中生成字符串的所有排列?

如何在一个 1×41 向量中生成定位 20 个 -1 值的每个排列?

杨辉三角的第n行第n个数的求法(公式)

在 Matlab 中生成矩阵的所有可能组合