Wie bekommt man nun alle Datensätze aus einer Tabelle, die nicht in einer anderen Tabelle sind?
Dafür gibt es 2 Vorgehensweise, entweder mit einem In()-Operator und einer Unterabfrage oder mit einem JOIN und einer Prüfung auf Null:
SELECT * FROM Tabelle WHERE ID Not In(SELECT ID FROM Tabelle2)
Oder
SELECT Tabelle1.* FROM Tabelle 1 LEFT JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.ID WHERE Not Tabelle2.ID Is Null
SELECT Tabelle1.* FROM Tabelle1 Tabelle2 ON Tabelle1.ID = Tabelle2.ID WHERE Tabelle1.Feld1 <> Tabelle2.Feld1 OR Tabelle1.Feld2 <> Tabelle2.Feld2 OR Tabelle1.Feld3 <> Tabelle2.Feld3
SELECT *, (SELECT ID FROM Tabelle AS tblTemp WHERE tblTemp.ID < Tabelle.ID) FROM Tabelle
Und wie könnte man jetzt zum Beispiel die Summe aus dem aktuellen Wert und dem vorherigen bilden:
SELECT Feld1 + (SELECT Feld1 FROM Tabelle AS tblTemp WHERE tblTemp.ID < Tabelle.ID) FROM Tabelle
Eine Beispieldatei findet ihr hier.