在mysql中查找同名行

06odsfpq  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(274)

我有一张table
table1 a_id 作为 PK , hostname , create_dt 在这里 ipaddressvarchar , create_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表,它有以下列 `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

我想比较表1和表2使用 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, '%');
wmtdaxz3

wmtdaxz31#

你可以用 SUBSTRING_INDEX ,我没有尝试此查询,但下面的查询将看起来像您想要的。
试试这个:

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

更多信息

相关问题