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);

順序に関係なく、プライマリ/セカンダリの一意の組み合わせごとに 1 つのグループが提供されます。つまり、{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 に答える