Es gibt ein paar ähnliche Threads im Laufe der Jahre in Bezug auf diese, aber ich habe nicht gefunden oder war in der Lage zu tun, was ich suche.SQL Server: Auflisten von Unterschieden zwischen Tabellen
Ich habe derzeit zwei Tabellen, die dasselbe Schema haben, das ich durch ein Skript produziere. Einer ist "results_prior" und der andere ist "results_current". Diese neue Abfrage wird idealerweise einmal im Monat ausgeführt und ermittelt, ob es Unterschiede gibt. Beispiel:
TABLE: results_prior
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 03 | Development | 2008 | Bob |
----------------------------------------
| 05 | Production | 2012 | Phil |
----------------------------------------
| 09 | Development | 2008 | Erik |
----------------------------------------
| 13 | Production | 2012 | Ashley |
----------------------------------------
| 22 | Production | 2012 | Erik |
----------------------------------------
TABLE: results_current
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 03 | Development | 2008 | Bob |
----------------------------------------
| 05 | Production | 2012 | Phil |
----------------------------------------
| 22 | Production | 2012 | Erik |
----------------------------------------
Wenn die beiden miteinander verglichen werden, sollte das Ergebnis sein:
----------------------------------------
| ID | ENVIRONMENT | EDITION | CONTACT |
----------------------------------------
| 09 | Development | 2008 | Erik |
----------------------------------------
| 13 | Production | 2012 | Ashley |
----------------------------------------
seit 09 und 13 wurden in results_current. Ebenso, und dies ist vielleicht der knifflige Teil, ist dasselbe zu tun, wenn result_current mehr Ergebnisse als results_prior hat. Also umgekehrt.
Entschuldigung, ich habe keinen Beispielcode, um davon zu gehen. Ich habe die letzten paar Stunden mit UNION, JOINs und EXCEPTs herumgespielt und ich habe das Gefühl, dass meine Logik (wiederum in SQL Server) keinen Sinn ergibt. Jede Hilfe wäre willkommen.
ich etwas Ähnliches tun würde, aber ich würde ersetzen „ist nicht vorhanden“ für die „NOT IN“ -Klausel. NOT EXISTS funktioniert wie ein cut-Operator, so dass beim ersten Erfolg keine Zeilen mehr für diesen Kontext ausgewertet werden. –
Große Antworten auf meine Frage. Aber dies ist der, der mir die Ergebnisse liefert, ohne durch viele Reifen springen zu müssen. Ich habe auch alle Spalten mit * ersetzt und das gleiche Ergebnis erzielt. Das kann nützlich sein, wenn alle Spalten/Felder auf der Straße hinzugefügt werden. – Erik