Cenário:
você tem duas tabelas: login_log
e ip_location
. O objetivo é identificar todos os endereços IP gravados em login_log
que são não presentes em ip_location
.
SQL Solutions:
várias abordagens SQL podem conseguir isso. Vamos examinar três métodos comuns:
não existe
Subquery: Este método é geralmente eficiente e amplamente compatível.
SELECT ip
FROM login_log
WHERE NOT EXISTS (
SELECT 1
FROM ip_location
WHERE login_log.ip = ip_location.ip
);
Esta consulta verifica se cada endereço IP em login_log
tem uma entrada correspondente em ip_location
. Se nenhuma correspondência for encontrada, o endereço IP estará incluído nos resultados. Observe que selecione 1
é frequentemente mais eficiente que selecione IP
no subquery.
esquerda junção
com null
check: essa abordagem usa um letra de junção
para combinar as tabelas, depois os filtros para linhas onde coluna Endereço IP ausente.
selecione l.ip
De login_log l
Junção esquerda ip_location i em l.ip = i.ip
Onde i.ip é nulo;
SELECT l.ip
FROM login_log l
LEFT JOIN ip_location i ON l.ip = i.ip
WHERE i.ip IS NULL;
exceto em alguns bancos de dados): Esta operação baseada em conjunto encontra diretamente a diferença entre os endereços IP nas duas tabelas. Observe que a sintaxe pode variar um pouco, dependendo do seu sistema de banco de dados específico (por exemplo, menos
no oracle).
Selecione IP no login_log
EXCETO
Selecione IP em ip_location;
SELECT ip FROM login_log
EXCEPT
SELECT ip FROM ip_location;
não existe geralmente tem um bom desempenho no PostGresql, enquanto LEITE JONE
pode ser eficiente em outros sistemas. exceto pode ser conciso, mas nem sempre pode ser o mais rápido. Evite
não está em com subconsências, pois pode ser significativamente mais lento, especialmente com conjuntos de dados grandes. A indexação apropriada na coluna
ip em ambas as tabelas é crucial para o desempenho em todos os casos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3