例如有个表 T ( name String )
表T的数据有
name
—
A
B
C
本人想要的结果是
name1 name2
—
A B
A C
B C
本人想到的是表T先做笛卡尔积,但是笛卡尔积后有重复的,如下
select a.name name1, b.name name2
from T a,T b
where a.name<>b.name
这样的结果是
name1 name2
—
A B
A C
B C
B A
C A
C B
讨教下,假如才能实现本人想要的结果?
表T的数据有
name
—
A
B
C
本人想要的结果是
name1 name2
—
A B
A C
B C
本人想到的是表T先做笛卡尔积,但是笛卡尔积后有重复的,如下
select a.name name1, b.name name2
from T a,T b
where a.name<>b.name
这样的结果是
name1 name2
—
A B
A C
B C
B A
C A
C B
讨教下,假如才能实现本人想要的结果?
解决方案
20
表T增加一列自增ID,1:A,2:B,3:C, 每次只与比本人ID大的元素组合
ex:
select * from T a join T b ON a.id< b.id
ex:
select * from T a join T b ON a.id< b.id
30
select a.name name1, b.name name2
from T a,T b
where a.name<b.name
from T a,T b
where a.name<b.name