Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Localizar registros de uma tabela que não existem em outra


Há várias maneiras diferentes de fazer isso, com eficiência variável, dependendo da qualidade do seu otimizador de consulta e do tamanho relativo de suas duas tabelas:

Esta é a declaração mais curta e pode ser mais rápida se sua lista telefônica for muito curta:
SELECT  *
FROM    Call
WHERE   phone_number NOT IN (SELECT phone_number FROM Phone_book)

alternativamente (graças a Alterlife )
SELECT *
FROM   Call
WHERE  NOT EXISTS
  (SELECT *
   FROM   Phone_book
   WHERE  Phone_book.phone_number = Call.phone_number)

ou (graças a WOPR)
SELECT * 
FROM   Call
LEFT OUTER JOIN Phone_Book
  ON (Call.phone_number = Phone_book.phone_number)
  WHERE Phone_book.phone_number IS NULL

(ignorando que, como outros disseram, normalmente é melhor selecionar apenas as colunas que você deseja, não '* ')