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?

¿Fue útil?

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
scroll top