MySQL, wie die Datensätze in einer Tabelle zu entfernen, die in einer anderen Tabelle sind
-
06-07-2019 - |
Frage
Ich habe Tabelle A mit knapp 15.000 Einträgen. Ich habe eine zweite Tabelle B mit 7900 Einträgen mit einem gemeinsamen Feld mit Tabelle A
muß ich in eine dritte temporäre TableC extrahieren alle Einträge aus der Tabelle A, außer denen, die auch in Tabelle B erscheinen einfach, wie es klingen mag, ich gefunden habe, einen Weg, es zu tun. Die nächstgelegene ich bekam, war diese:
INSERT INTO tableC
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.field IS NOT tableB.field
Diese SQL wählt einfach alles in tableA, auch Einträge, die in tableB sind.
Irgendwelche Ideen, wo ich falsch gehe?
Lösung
Was ist, wenn Sie versuchen, das?
INSERT INTO tableC
SELECT *
FROM tableA
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)
Sie können auch versuchen, die alternative VORHANDEN Syntax
INSERT INTO tableC
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow