2017-07-20 2 views
0

Ich habe zwei Tabellen und beide enthält mehrere übereinstimmende Datensätze, ich möchte nur die übereinstimmenden Kontakte zwischen den beiden Tabellen identifizieren und mit einzelnen Zeilen verglichen werden und überspringen wenn nicht passend.Vergleichen Sie Tabellen und wählen Sie Match-Zeilen zu einzelnen Zeile der anderen Tabelle

table A             table B 
name |amount          name|amount 
A |20           C | 50 
B |20           A | 20 
C |50           A | 20 
A |20           B | 50 
B |20           B | 20 
c |20           C | 20 
                C | 50 

so möchte ich eine SQL-Abfrage schreiben, ein Ergebnis wie B 50 und C erhalten 50 nicht passend, damit ich sie

table A             table B 
    name |amount          name|amount 
    A |20           A | 20 
    A |20           A | 20 
    B |20           A | 20 
    B |20           B | 20 
    C |20           B | 20 
    C |20           C | 20 
                 C | 20 
                 C | 20 
                 C | 20 

so möchte ich ein Ergebnis wie dieses hervorheben, die zurückgegeben wird, aus Tabelle B, da diese Einträge nicht übereinstimmen.

A 20 
C 20 
C 20 
+0

Was ist die Abfrage, die Sie versucht haben, zu schreiben ..? –

+0

@KaushikNayak Ich bekomme nicht die Idee nur so nicht in der Lage, es herauszufinden –

+1

beide Tabelle haben c mit Betrag 20 und 50. Welche wollen Sie sehen? Gib mehr Beispiele. –

Antwort

0

Vielleicht so etwas?

select a2.name, a2.amount 
from (select name, amount, count(*) as n from A group by name, amount) a2 
join (select name, amount, count(*) as n from B group by name, amount) b2 on b2.name = a2.name and b2.amount = a2.amount 
where b2.n <> a2.n 

Da ich weiß nicht, was das gewünschte Ergebnis erzeugt, wenn ein Paar Name/Menge in A existiert und nicht in B (oder in B und nicht in A), können Sie es ein bisschen anpassen.

0

SELECT c.name, c.amount, o.name, o.amount FROM tableA AS c, TableB AS o WHERE c.name=o.amount AND c.amount=o.amount;

Dies ist eine Idee von der Art und Weise ist, sollten Sie, bietet keine vollständige Antwort versuchen.

Auch sollten Sie versuchen, mit diesem zu verbinden:

SELECT c.name, c.amount, o.name, o.amount, Count(*) as Duplicates FROM tableA AS c, TableB AS o WHERE c.name=o.amount AND c.amount=o.amount having Duplicates > 1;

Verwandte Themen