【发布时间】:2023-04-06 09:20:01
【问题描述】:
假设我有一个包含 3 行的表:A、B、C
DECLARE @t TABLE (col varchar(1))
INSERT @t
SELECT 'A' UNION
SELECT 'B' UNION
SELECT 'C'
我想连接三个值并选择所有可能的组合:
A;B;C;
A;C;B;
B;A;C;
B;C;A;
C;A;B;
C;B;A;
这个查询给了我第一个组合:A;B;C;
SELECT STUFF(
(
SELECT t1.col + ';'
FROM @t AS t1
--CROSS JOIN @t AS t2
FOR XML PATH('')
),1,0,'') AS List
如果我取消注释带有 CROSS JOIN 的行,我会得到:
A;B;C;A;B;C;A;B;C;
但显然这不是我要找的 ;-) 首先,所有内容都在一行中。其次,它总是相同的组合(A;B;C;,A;B;C;,A;B;C;)而我正在寻找A;B;C;,B;C;A;,C;A;B;
【问题讨论】:
-
所有可能的组合,但
C;B;A等在哪里? -
很好,@jarlh! :-)
-
看看这个。这是完全相同的问题,因为“所有组合”被称为 Permutations。 stackoverflow.com/questions/3621494/…
-
某人突然将值
D插入表中的预期结果是什么?
标签: sql combinations permutation