连接值

时间:2016-06-05 10:26:44

标签: sql concatenation

我想在我的专栏中连接所有配对选项。

我有一张桌子:

ID    num
1     10
2     20
3     30

我想创建一个查询,它会给我以下结果:

10,20    
10,30   
20,10   
20,30   
30,10   
30,20

此外,我想要第二个查询将返回没有倍数(10,20 = 20,10)

10,20
10,30   
20,30  

如何在2个不同的查询中获得上述2?

由于

3 个答案:

答案 0 :(得分:3)

对于第一个,我会做一个过滤相同的笛卡尔积。

SELECT a.num, b.num
FROM tablename a, tablename b
WHERE a.num != b.num // Unless you want to exclude by ID

对于第二个,我会强迫一方比另一方更大。

SELECT a.num, b.num
FROM tablename a, tablename b
WHERE a.num < b.num

答案 1 :(得分:0)

假设您的表名是“mytable”。 第一查询:

Select 
t1.num,
t2.num
from mytable t1 join mytable t2 on
t1.ID!=t2.ID

第二次质疑:

Select 
t1.num,
t2.num
from mytable t1 join mytable t2 on
t1.ID<t2.ID

答案 2 :(得分:0)

您必须使用自联接才能获得所需的结果。使用||连接列。如果表名是t 查询第一个将是:

Select 
t1.num||','|| t2.num
from t t1 join t t2 on
t1.id<t2.id

可以使用以下查询获得第二个结果:

{{1}}