MySQL cómo eliminar registros en una tabla que están en otra tabla
-
06-07-2019 - |
Pregunta
Tengo la tabla A con cerca de 15000 entradas. Tengo una segunda tabla B con 7900 entradas con un campo común con la tabla A.
Necesito extraer en una tercera tabla temporal C todas las entradas de la tabla A excepto las que también aparecen en la tabla B. Por simple que parezca, no he encontrado la manera de hacerlo. Lo más cercano que tuve fue esto:
INSERT INTO tableC
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.field IS NOT tableB.field
Este SQL simplemente selecciona todo en la tabla A, incluso las entradas que están en la tabla B.
¿Alguna idea de dónde me estoy equivocando?
Solución
¿Qué pasa si intentas esto?
INSERT INTO tableC
SELECT *
FROM tableA
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)
O puede probar la sintaxis EXISTENTE alternativa
INSERT INTO tableC
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow