我在下面有一张表格,我想选择所有独特的配对。很难在没有听起来像我需要的情况下说出这个问题,select distinct
所以我会写出所需的输出和每个可能的组合。
对1:(1,4)和(2,5)
对2:(1,4)和(3,6)
对3:(2,5)和(3,6)
这与二项式系数相同:
n 选择 r,其中 n = 3 和 k = 2。
理想情况下,输出将类似于:
老实说,我不知道从哪里开始,所以请原谅没有第一次尝试。
我在下面有一张表格,我想选择所有独特的配对。很难在没有听起来像我需要的情况下说出这个问题,select distinct
所以我会写出所需的输出和每个可能的组合。
对1:(1,4)和(2,5)
对2:(1,4)和(3,6)
对3:(2,5)和(3,6)
这与二项式系数相同:
n 选择 r,其中 n = 3 和 k = 2。
理想情况下,输出将类似于:
老实说,我不知道从哪里开始,所以请原谅没有第一次尝试。
使用具有消除重复条件的自联接:
create table a_table (cola int, colb int);
insert into a_table values
(1, 4), (2, 5), (3, 6);
select *
from a_table a
join a_table b
on a.cola < b.cola and a.colb <> b.colb;
cola | colb | cola | colb
------+------+------+------
1 | 4 | 2 | 5
1 | 4 | 3 | 6
2 | 5 | 3 | 6
(3 rows)
cola
如果列是唯一的,则上述查询效果很好。如果 的值cola
可以重复,则应添加附加条件:
insert into a_table values (1, 8);
select *
from a_table a
join a_table b
on a.cola < b.cola and a.colb <> b.colb
or a.cola = b.cola and a.colb < b.colb
order by 1, 2;
cola | colb | cola | colb
------+------+------+------
1 | 4 | 2 | 5
1 | 4 | 3 | 6
1 | 4 | 1 | 8
1 | 8 | 2 | 5
1 | 8 | 3 | 6
2 | 5 | 3 | 6
(6 rows)