Acho que estou indo pelo caminho certo com este ... Tenha paciência, pois meu SQL não é o melhor
Estou tentando consultar um banco de dados para selecionar tudo de uma tabela onde certas células não existem em outra. Isso não faz muito sentido, mas espero que este código
SELECT * from employees WHERE NOT EXISTS (SELECT name FROM eotm_dyn)
Basicamente, tenho uma tabela com uma lista de funcionários e seus detalhes. Em seguida, outra tabela com alguns outros detalhes, incluindo seu nome. Onde o nome não está na tabela eotm_dyn, o que significa que não há entrada para eles, gostaria de ver exatamente quem são, ou em outras palavras, ver o que exatamente está faltando.
A consulta acima não retorna nada, mas sei que faltam nomes 20, então obviamente não acertei.
Alguém pode ajudar?
group by X having exist [row with employeeID = e.id]
OU
OU
fonte
NOT IN
não funciona como esperado sename
tivernull
valores. Assista a 36min 20seg no vídeo SESSÃO: 10 técnicas de ajuste de consulta que todo programador de SQL deve saber (Kevin Kline, Aaron Bertrand) .Você pode fazer um LEFT JOIN e afirmar que a coluna associada é NULL.
Exemplo:
fonte
Nunca retorna nenhum registro, a menos que
eotm_dyn
esteja vazio. Você precisa de algum tipo de critérioSELECT name FROM eotm_dyn
comoassumindo que as duas tabelas estão vinculadas por um relacionamento de chave estrangeira. Neste ponto, você pode usar uma variedade de outras opções, incluindo LEFT JOIN. O otimizador normalmente os tratará da mesma forma na maioria dos casos.
fonte
Você também pode dar uma olhada nesta questão relacionada . Esse usuário relatou que o uso de uma junção proporcionou um desempenho melhor do que o uso de uma subconsulta.
fonte