根据主机名查找匹配的列值

时间:2018-01-11 03:10:47

标签: mysql sql select mysqli inner-join

我的table1b_idPKiphost 在此表中,不同的主机可以具有相同的ipaddress 在此,t2_idid

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作为PKiphostb_id这里b_id是外键到table1 在我的项目中,两个主机名hi.abc.comhi被视为相同,因为域名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;

1 个答案:

答案 0 :(得分: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)
                 ) ;