«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как найти недостающий IP -адрес между двумя таблицами?

Как найти недостающий IP -адрес между двумя таблицами?

Опубликовано в 2025-05-01
Просматривать:252

How to Find Missing IP Addresses Between Two Tables?

поиск пропущенных IP -адресов: сравнение SQL

]

сценарий:

у вас есть две таблицы: login_log и ip_location . Цель состоит в том, чтобы идентифицировать все IP -адреса, записанные в login_log , что не присутствует в ip_location .

]

SQL Solutions:

]

несколько подходов SQL могут достичь этого. Давайте рассмотрим три общих метода:

]
    ]
  1. ]

    не существует subquery: Этот метод обычно эффективен и широко совместим.

    SELECT ip
    FROM login_log
    WHERE NOT EXISTS (
        SELECT 1
        FROM ip_location
        WHERE login_log.ip = ip_location.ip
    );
    Этот запрос проверяет, если каждый IP -адрес в

    login_log имеет соответствующую запись в ip_location . Если совпадение не найдено, IP -адрес включен в результаты. Обратите внимание, что select 1 часто более эффективен, чем select ip в подведении. ]

    ]
  2. ]
  3. Left join с null проверить: ] Этот подход использует reak quip , чтобы объединить таблицы, затем фильтры для строк, где ip in in in in in inull inull ] select L.ip От login_log l Левый соединение ip_location i на l.ip = i.ip Где i.ip null;

    ]
    SELECT l.ip
    FROM login_log l
    LEFT JOIN ip_location i ON l.ip = i.ip
    WHERE i.ip IS NULL;
  4. кроме
  5. (или

    minus в некоторых базах данных): Эта основанная на сборе операция непосредственно находит разницу между IP-адресами в двух таблицах. Обратите внимание, что синтаксис может немного отличаться в зависимости от вашей конкретной системы баз данных (например, minus в Oracle). ] выберите IP из login_log КРОМЕ Выберите IP из ip_location;

    ]
    SELECT l.ip
    FROM login_log l
    LEFT JOIN ip_location i ON l.ip = i.ip
    WHERE i.ip IS NULL;
    Соображения по производительности:

Оптимальный метод зависит от вашей системы базы данных, размера таблицы и индексации. не существует часто хорошо работает в PostgreSQL, в то время как

Left join

может быть эффективным в других системах. кроме может быть кратким, но не всегда может быть самым быстрым. Избегайте не в с подтех, так как это может быть значительно медленнее, особенно с большими наборами данных. Соответствующая индексация в столбце ip в обеих таблицах имеет решающее значение для производительности во всех случаях. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3