我有一个table1
a_id
表PK
,hostname
,create_dt
此处ipaddress
为varchar
,create_dt
为datetime
a_id hostname create_dt
9205 abc.com 2017-01-07 08:03:32
9206 cde 2017-01-06 08:03:32
9207 abc2.com 2015-01-07 08:03:32
---超过1000行
我有另一个mysql表,其中包含以下id
列PK
,name
和created_dt
:
created_dt
是datetime
id name created_dt
1 abc 2017-01-07 10:03:32
2 cde.com 2017-01-07 10:03:32
3 abc2.com 2016-11-07 10:03:32
4 abc3.com 2016-11-07 10:03:32
5 abc4.com 2017-01-06 10:03:32
6 abc5.com 2015-01-06 10:03:32
我想使用hostname
和name
比较table1和table2,并将table2
中所有没有主机名的行带到table1
所以从上面的例子中,我的查询应该返回
id name timestamp_val
4 abc3.com 2016-11-07 10:03:32
5 abc4.com 2017-01-06 10:03:32
6 abc5.com 2015-01-06 10:03:32
我写了以下查询
SELECT *
FROM table2.name a
INNER JOIN table1.hostname b
where a.name NOT LIKE CONCAT(b.hostname, '%');
答案 0 :(得分:0)
像这样(未经测试):
SELECT *
FROM Table2 t2
LEFT JOIN Table1 t1 ON SUBSTRING_INDEX(t1.hostname, '.',1)=
SUBSTRING_INDEX(t2.name, '.', 1)
WHERE t1.name IS NULL