Поиск совпадающих значений столбцов на основе имени хоста

0

У меня есть таблица table1 с b_id как PK, ip, host В этой таблице разные хосты могут иметь один и тот же ipaddress. Здесь t2_id является внешним ключом к id table2

b_id    ip              host             t2_id
9205    10.10.10.10     zero             1121
9206    10.10.10.10     hello.abc.com    1121
9207    10.10.10.10     hi.abc.com       1121

У меня есть другая таблица table2 id как PK, ip, host и b_id Здесь b_id - это b_id ключ для table1 В моем проекте два имени хоста hi.abc.com и hi считаются одинаковыми, поскольку доменное имя abc.com не рассматривается в сравнении, Итак, мне просто нужно сравнить hostname without domain name

id      ip              host             b_id
1121    10.10.10.10     hi               null

Я хочу отфильтровать строки из table1 которые имеют одинаковые значения ip но host отличается. Итак, мой вывод должен быть

b_id    ip              host             t2_id
9205    10.10.10.10     zero             1121
9206    10.10.10.10     hello.abc.com    1121

Я написал следующий запрос, но он не дает правильного результата

select * from table1 T1 INNER JOIN table2 T2
ON T1.t2_id = T2.id
where T1.host not like T2.host;
Теги:
select
mysqli
inner-join

1 ответ

0
Лучший ответ

Как насчет использования not exists?

select t1.*
from table1 t1
where not exists (select 1
                  from table2 t2
                  where t2.ip = t1.ip and
                        substring_index(t2.host, '.', 1) = substring_index(t1.host, '.', 1)
                 ) ;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню