2013-03-06 104 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