2017-11-11 3 views
0

angesichts der folgenden Tabelle vergleichen, wie kann ich den Unterschied zwischen den zwei Tabellen haben die Tatsache geben, dass T143 alle Zeilen kopiert hat:Wie 2 SQL-Tabelle für Differenz

T001.CODE    T143.CODE 
----     ----- 
A1      A1 
         A1 
A2      A2 
         A2 
A3    

A4      A4 
         A4 

Ergebnis sollte A3 sein als einzigem in T001 vorhanden - ich muss auch alle Spalten von T143 anzeigen.

Hier ist, was ich zu tun haben weit, aber nach einer manuellen Überprüfung der Daten gibt es Fehler:

SELECT CODE FROM T001 
EXCEPT 
SELECT CODE FROM T143 

dank

+2

können Sie das Ergebnis zeigen, das Sie gerade erhalten? –

+2

Markieren Sie Ihre Frage mit der von Ihnen verwendeten Datenbank. –

+0

Wenn das Ergebnis A3 sein soll, scheint Ihre Abfrage wie unter PostgreSQL und SQLite3 zu funktionieren. – tonypdmtr

Antwort

0

Sie können diese exists mit immer tun:

select t1.code 
from t001 t1 
where not exists (select 1 from t143 t2 where t2.code = t1.code); 

Wenn Sie auch wollen die Spalten von t2, dann verwenden Sie union all, um sie zu bekommen.

Wenn Sie alle Codes in beiden Tabellen möchten, gehen Sie einfach:

select t1.code 
from t001 
union -- on purpose for duplicate removal 
select t2.code 
from t143; 
+0

Er 'muss auch alle Spalten von T143 anzeigen.' – Turo

0

Eine vollständige äußere Verknüpfung sollte den Trick

SELECT DISTINCT COALESCE(T001.CODE,T143.CODE), T143.* 
FROM T001 FULL OUTER JOIN T143 
ON T001.CODE = T143.CODE 
WHERE T001.CODE IS NULL OR T143.CODE IS NULL 

EDIT tun: Da DISTINCT wird in den Tags erwähnt, Ich fügte es der Frage hinzu

+0

scheint zu funktionieren, habe ich T001. * Anstelle von T143. * Verwendet, um alle Spalte anzuzeigen - macht es Sinn? –

+0

Es ist nicht das, was Sie in Ihrer Frage gesagt haben, aber wenn es Ihren Bedürfnissen entspricht ... – Turo

Verwandte Themen