У меня есть таблица 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
---more, чем 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
Я хочу сравнить table1 и table2 с использованием hostname
и name
hostname
и привести все строки из 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, '%');
Что-то вроде этого (непроверено):
SELECT *
FROM Table2 t2
LEFT JOIN Table1 t1 ON SUBSTRING_INDEX(t1.hostname, '.',1)=
SUBSTRING_INDEX(t2.name, '.', 1)
WHERE t1.name IS NULL
OUTER JOIN
+WHERE IS NULL