在MYSQL中查找具有相同名称的行

时间:2018-06-06 05:39:19

标签: mysql join inner-join crud outer-join

我有一个table1 a_idPKhostnamecreate_dt 此处ipaddressvarcharcreate_dtdatetime

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表,其中包含以下idPKnamecreated_dtcreated_dtdatetime

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

我想使用hostnamename比较table1和table2,并将来自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 :(得分:1)

您可以使用SUBSTRING_INDEX,我没有尝试此查询,但下面的查询会看起来像您想要的那样。

试试这个:

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

More Info