2

我有一个有 2 列的表 - “主要”和“次要”。此外还有其他栏目。以下是一组示例行:

id=1, primary=A, secondary=B, .....
id=2, primary=C, secondary=D, .....
....
.......
id=200, primary=B, secondary=A, .....
id=300, primary=J, secondary=D, .....

我需要一个“GROUP BY”查询,它将主要和次要值属于同一对值的所有行分组,而不管顺序如何。因此,组应如下所示:

group=1, nodepair=BA, ....   // (primary=A && secondary=B) OR (primary=B && secondary=A)
group=2, nodepair=JM, ....   // (primary=J && secondary=M) OR (primary=M && secondary=J)

谢谢。

4

2 回答 2

2

你在寻找这样的东西吗?

select least(primary, secondary)
      ,greatest(primary, secondary)
 from yourtable
group 
   by least(primary, secondary)
     ,greatest(primary, secondary);

无论顺序如何,它都会为每个主要/次要的唯一组合提供一组,即 {A,B} 与 {B,A} 相同。

于 2013-03-06T08:22:52.170 回答
0
select * from table t1
inner join table t2
on t1.primary = t2.secondary 
and t1.secondary = t2.primary 

然后你会得到结果:

id=1,primary=A,secondary=B,id=200,primary=B,secondary=A id=200,primary=B,secondary=A,id=1,primary=A,secondary=B

于 2013-03-06T07:15:44.373 回答