SQL Server Differenz (Gegenteil von intersect)

Suchen Sie nach der einfachsten / am besten skalierbaren Methode, um einen bestimmten "Unterschied" in SQL Server zu erzielen (siehe unten).

Wenn Sie nicht aus dem Bild sagen können, suche ich nach allem, was nicht in der Kreuzung ist.

Ich habe einen Weg gesehen, es zu tun:

select * from (      
    (select 'test1' as a, 1 as b)
 union all
  (select 'test2' as a , 2 as b union all select 'test1' as a , 1 as b )
)un group by a,b  having count(1)=1

Aber ich fürchte, was passieren würde, wenn ich zwei große Mengen verwenden würde (ich werde nicht von ausgewählten '' konstanten Anweisungen abfragen, meine Abfragen werden von echten Tabellen gezogen.)

BEARBEITEN

Mögliche Lösung..

drop table #temp_a;
drop table #temp_b;

 go


  select * into #temp_a from (
   select 1 as num, 'String' as two, 'int'as three, 'purple' as four union all
   select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
   select 3 as num, 'dog' as two, 'int'as three, 'cat' as four ) a 

select * into #temp_b from (
  select 1 as num, 'String' as two, 'decimal'as three, 'purple' as four union all
  select 2 as num, 'dog' as two, 'int'as three, 'purple' as four union all
  select 3 as num, 'dog' as two, 'int'as three, 'dog' as four ) b 





   SELECT IsNull(a.num, b.num) A,IsNull(a.two, b.two) B, IsNull(a.three, b.three) C,                  
      IsNull(a.four, b.four) D 
     FROM #temp_a a 
   FULL OUTER JOIN #temp_b b ON (a.num=b.num AND a.two=b.two and a.three=b.three and a.four=b.four)
    WHERE   (a.num is null or b.num is null  )

ERGEBNISSE

1 String int purple

3 Hund int Katze

1 String dec purple

3 Hund int Hund

Antworten auf die Frage(6)

Ihre Antwort auf die Frage