MySQL come rimuovere i record in una tabella che si trovano in un'altra tabella
-
06-07-2019 - |
Domanda
Ho una tabella A con quasi 15000 voci. Ho una seconda tabella B con 7900 voci con un campo comune con la tabella A.
Ho bisogno di estrarre in una terza tabella temporanea C tutte le voci dalla tabella A tranne quelle che appaiono anche nella tabella B. Per quanto possa sembrare semplice, non ho mai trovato un modo per farlo. Il più vicino che ho avuto è stato questo:
INSERT INTO tableC
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.field IS NOT tableB.field
Questo SQL seleziona solo tutto nella tabella A, anche le voci che si trovano nella tabella B.
Qualche idea su dove sbaglio?
Soluzione
Che cosa succede se provi questo?
INSERT INTO tableC
SELECT *
FROM tableA
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)
Oppure puoi provare la sintassi EXISTS alternativa
INSERT INTO tableC
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow