MySQL como remover registros em uma tabela que estão em outra tabela
-
06-07-2019 - |
Pergunta
Eu tenho uma tabela com cerca de 15000 entradas. Eu tenho uma segunda tabela B com 7900 entradas com um campo comum com a tabela A.
Eu preciso extrair em uma terceira TableC temporária todas as entradas da tabela A, exceto aqueles que também aparecem na tabela B. Por mais simples que possa parecer, não reembolsaram i encontrou uma maneira de fazê-lo. O mais próximo que eu obtive era esta:
INSERT INTO tableC
SELECT *
FROM tableA
INNER JOIN tableB
ON tableA.field IS NOT tableB.field
Esta SQL apenas seleciona tudo na tableA, até mesmo entradas que estão no tableB.
Todas as idéias para onde estou indo errado?
Solução
E se você tentar isso?
INSERT INTO tableC
SELECT *
FROM tableA
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)
Ou você pode tentar o suplente EXISTE sintaxe
INSERT INTO tableC
SELECT *
FROM tableA
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow