2013-03-06 102 views
2

我有一个带有2列的表格 - “主要”和“次要”。另外还有其他栏目。 以下是行的样本集:sql“分组依据”,以组对同一对对应的行进行分组

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) 

感谢。

回答

2

你在找这样的吗?

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

它会给你每主/副的独特组合中的一个组无论的量级,即{A,B}是相同的{B,A}。

+0

这就是我一直在寻找的东西。谢谢Ronnis。 – anr1234 2013-03-06 10:46:19

0
select * from table t1 
inner join table t2 
on t1.primary = t2.secondary 
and t1.secondary = t2.primary 

那么你就必须在结果:

ID = 1,初级= A,次要= B,ID = 200,初级= B,二次= A ID = 200,初级= B ,secondary = A,id = 1,primary = A,secondary = B