2009-06-19 22 views
1

J'ai la table A avec près de 15000 entrées. J'ai une deuxième table B avec 7900 entrées avec un champ commun avec la table A.MySQL comment supprimer des enregistrements dans une table qui sont dans une autre table

Je dois extraire dans une troisième table temporaireC toutes les entrées de la table A sauf celles qui apparaissent également dans la table B. Simple comme il peut sembler , je n'ai pas trouvé un moyen de le faire. Le plus proche je suis arrivé était le suivant:

INSERT INTO tableC 
SELECT * 
FROM tableA 
    INNER JOIN tableB 
     ON tableA.field IS NOT tableB.field 

Cette SQL sélectionne tout simplement tableA, même les entrées qui sont tableB.

Des idées où je me trompe?

Répondre

6

Et si vous essayez ceci?

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB) 

Ou vous pouvez essayer la syntaxe alternative EXISTE

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field) 
+0

excellent! Cela a fonctionné comme un charme. N'avait pas besoin de simplement utiliser un sous-select. –

+0

content que ça a aidé !! –