插入唯一值的每个组合而无需循环

时间:2019-03-27 01:16:46

标签: sql-server

给出3个值,例如

+--------+
| values |
+--------+
|    1   |
+--------+
|    2   |
+--------+
|    3   |
+--------+

是否可以在不使用WHILE循环的情况下将每个值的每个UNIQUE组合插入表中?

例如,最终结果将如下所示:

enter image description here

使用嵌套的WHILE循环来进行此操作相对简单,但我想知道是否还有其他方法可以使用。

1 个答案:

答案 0 :(得分:0)

declare @t table
(
  n int not null
);

insert into @t (n)
values
(1),
(2),
(3);

select * from @t;

select
value1 = t1.n,
value2 = t2.n,
value3 = t3.n
from @t t1
inner join @t t2 on t1.n <> t2.n
inner join @t t3 on t1.n <> t3.n and t2.n <> t3.n; 

enter image description here