2016-05-18 12 views
1

Ich möchte alle Zeilen in zwei Tabellen wie unten vergleichen.Wie vergleicht man alle Zeilenwerte von zwei Tabellen, die in der Struktur identisch sind

TABLEA (ID, NAME, E-MAIL, MOBILE, ADRESSE), TABLEB (ID, NAME, E-MAIL, MOBILE, ADRESSE).

Hier habe ich die obigen Tabellen mit jeweils 20 Spalten in Echt.

Immer wenn eine neue Zeile in die Tabellen eingefügt wird, muss ich die neu eingefügte Zeile in zwei Tabellen vergleichen, falls Spaltenübereinstimmungen in einer anderen Tabelle enthalten sind.

Zum Beispiel: TABLEA (1234, ABCDEF, 78699EE7, Indien) TABLEB (1234, ABCDEF, 78.699.876, Indien) Above Mobil ist nicht angepasst, ich brauche Spaltennamen Mobil in einer anderen Tabelle einfügen.

Bitte helfen Sie mir dabei. Danke.

Antwort

0

Ich bin sicher, es gibt nur wenige Möglichkeiten, es zu tun. Aber eine Art und Weise kommt meiner Meinung nach nur mit SQL verwenden UNION ALL:

INSERT INTO your_other_table(id, name, email, mobile, address) 
    SELECT id, name, email, mobile, address 
     FROM tableA 
    UNION ALL 
    SELECT id, name, email, mobile, address 
     FROM tableB; 

Es ist jedoch nicht klar, wenn Sie diese ausführen müssen. Da das INSERT bei beiden Tabellen auftritt, geschieht dies innerhalb derselben Transaktion. Wenn dies der Fall ist, kann das obige Skript in einen Trigger eingebunden werden. Wenn das INSERT in verschiedenen Transaktionen und immer in der gleichen Reihenfolge auftritt (z. B. tableA then tableB), können Sie es erneut in den Trigger für tableB umbrechen. Andernfalls müssen Sie es separat ausführen.

Beachten Sie, dass das obige Skript die gesamten Tabellen und nicht nur die neu eingefügten Zeilen vergleicht. Wenn also irgendeine Aktualisierung in irgendeiner Zeile in einer der Tabellen erfolgt und nicht in der anderen, wird diese Zeile ebenfalls in die dritte Tabelle eingefügt.

Verwandte Themen