我的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
是外键到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;
答案 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)
) ;