在 MYSQL 中查找具有相同名称的行
Finding rows with same name in MYSQL
我有一个 table 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 table 以下列 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
所以从上面的例子来看,我的查询应该return
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, '%');
您可以使用 SUBSTRING_INDEX
,我没有尝试这个查询,但下面的查询看起来像您想要的。
试试这个:
SELECT t2.*
FROM table2 t1, table2 t2
WHERE (SUBSTRING_INDEX(t1.hostname, '.', 1) = SUBSTRING_INDEX(t2.name, '.', 1))
我有一个 table 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 table 以下列 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
所以从上面的例子来看,我的查询应该return
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, '%');
您可以使用 SUBSTRING_INDEX
,我没有尝试这个查询,但下面的查询看起来像您想要的。
试试这个:
SELECT t2.*
FROM table2 t1, table2 t2
WHERE (SUBSTRING_INDEX(t1.hostname, '.', 1) = SUBSTRING_INDEX(t2.name, '.', 1))