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?

È stato utile?

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