Поиск строк с одинаковыми именами в MYSQL - PullRequest
0 голосов
/ 06 июня 2018

У меня есть таблица 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

Я хочу сравнить table1 и table2, используя hostname и name, и перенести все строки из table2 с именем хоста, существующим в table1

. Итак, из приведенного выше примера мой запросдолжен вернуть

id      name                 timestamp_val
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

Я написал следующий запрос

SELECT *  
FROM table2.name a
INNER JOIN table1.hostname b
  where  a.name LIKE CONCAT(b.hostname, '%');

1 Ответ

0 голосов
/ 06 июня 2018

Вы можете использовать SUBSTRING_INDEX, я не пробовал этот запрос, но приведенный ниже запрос будет выглядеть так, как вы хотите.

Попробуйте:

SELECT t2.*
FROM table2 t1, table2 t2
WHERE (SUBSTRING_INDEX(t1.hostname, '.', 1) = SUBSTRING_INDEX(t2.name, '.', 1))

Подробнее

...