"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como encontrar o endereço IP ausente entre duas tabelas?

Como encontrar o endereço IP ausente entre duas tabelas?

Postado em 2025-05-01
Navegar:587

How to Find Missing IP Addresses Between Two Tables?

encontrando endereços IP ausentes: uma comparação SQL

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:

  1. 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.

  2. 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
  3. (ou
  4. menos

    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;
O método ideal depende do seu sistema de banco de dados, tamanho da tabela e indexação.

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.

Tutorial mais recente Mais>

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