2012-10-17 10 views

Antwort

11
select A.id aid,B.id bid 
from A inner join B on a.id <= b.id 
union 
select B.id,A.id 
from A inner join B on b.id < a.id 

Wenn Sie wollten immer ausgefeilter sein:

select distinct 
     case when a.id<=b.id then a.id else b.id end id1, 
     case when a.id<=b.id then b.id else a.id end id2 
from A cross join B 

In meinem kleinen unwissenschaftlich backen weg mit kleinen Tischen, war dieser schneller. Und unten sind die case Ausdrücke als Unterabfragen geschrieben.

select distinct 
     (select MIN(id) from (select a.id union select b.id)[ ]) id1, 
     (select MAX(id) from (select a.id union select b.id)[ ]) id2 
from A cross join B 
+1

Sollte es nicht ein <<= in einer der Bedingungen geben? – podiluska

+0

+1 mit Ausnahme eines der Joins sollte 'a = b', dh' a.id <= b.id' – Bohemian

+0

@podiluska guten Fang! – RichardTheKiwi