Wenn die beiden Tabellen haben die gleichen Spalten den besten Weg, um sie zu vergleichen, ohne teure MINUS Operationen oder schließen sie (und nur jede Tabelle einmal lesen) ist wie folgt:
select max(flag), col1, col2, ...
from (
select 'prod' as flag, col1, col2, ... from table1_prod
union all
select 'dev' as flag, col1, col2, ... from table1_dev
)
group by col1, col2, ...
having count(*) = 1
In dem GROUP BY, wenn Die Zeile ist in den beiden Tabellen identisch, sie hat den Wert 2 und wird daher nicht ausgewählt. Count 1 ist der Fall, wenn die Zeile nur in prod oder nur in dev ist. Eine "geänderte" Zeile wird in beiden sein, aber mit einem anderen Wert in mindestens einer Spalte, so dass es wirklich zwei verschiedene Gruppen sind. Die Zeile "Geändert" ist nur dann sinnvoll, wenn die Tabellen einen eindeutigen Schlüssel haben, mit dem Sie sie abgleichen können. Sie können dann "geänderte" Zeilen identifizieren, indem Sie den Wert im eindeutigen Schlüssel vergleichen.
Was mit dem SQL falsch ist es, Ihnen zeigen? – OldProgrammer