MySQL comment supprimer les enregistrements d'une table qui se trouvent dans une autre table

StackOverflow https://stackoverflow.com/questions/1019475

  •  06-07-2019
  •  | 
  •  

Question

J'ai la table A avec près de 15 000 entrées. J'ai une deuxième table B avec 7900 entrées avec un champ commun avec la table A.

Je dois extraire dans une troisième tableC temporaire toutes les entrées de la table A, à l'exception de celles qui figurent également dans la table B. Aussi simple que cela puisse paraître, je n'ai pas trouvé le moyen de le faire. Le plus proche que j'ai eu était ceci:

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

Ce SQL sélectionne simplement tout ce qui se trouve dans la tableA, même les entrées qui se trouvent dans la table B.

Des idées pour lesquelles je me trompe?

Était-ce utile?

La solution

Et si vous essayiez ceci?

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

Ou vous pouvez essayer la syntaxe alternative EXISTS

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top