我在 MySQL/MariaDB 中有 2 个不同的表,它们具有关于计算机系统的不同数据。 computer_name
有一个公共字段,但对于同一台计算机,该字段的内容可能不同。在 TableA
中,computer_name
可以是“hostname”,而在 TableB
中,computer_name
可以是“hostname@dom1.domain”。我需要查看 col1
中的 col2
、col3
、TableA
和 {{1} 中的 col5
、col6
、col7
} 其中 TableB
类似于 '%hostname%'。
这可以在纯 SQL(选择或视图或存储过程)中完成还是可以在 PHP 中完成?
表A:
字段 | 类型 | 空 | 键 | 默认 | 额外 |
---|---|---|---|---|---|
tableA_id | int(10) 无符号 | 没有 | PRI | NULL | 自动增量 |
计算机名称 | varchar(50) | 没有 | NULL | ||
设备类型 | varchar(255) | 没有 | NULL | ||
ip_address | varchar(150) | 没有 | NULL | ||
os_type | varchar(50) | 没有 | NULL | ||
笔记本电脑 | varchar(255) | 没有 | NULL | ||
操作系统 | varchar(100) | 没有 | NULL | ||
last_report_time | varchar(100) | 没有 | NULL | ||
week_date | 日期 | 是 | NULL | ||
month_id | int(10) 无符号 | 没有 | NULL | ||
年 | int(10) 无符号 | 没有 | NULL | ||
创建日期 | 日期时间 | 没有 | NULL |
表B:
字段 | 类型 | 空 | 键 | 默认 | 额外 |
---|---|---|---|---|---|
tableb_id | int(10) 无符号 | 没有 | PRI | NULL | 自动增量 |
计算机名称 | varchar(60) | 没有 | NULL | ||
状态 | varchar(30) | 没有 | NULL | ||
server_type | varchar(30) | 没有 | NULL | ||
操作系统名称 | varchar(60) | 是 | NULL | ||
os_version | varchar(100) | 是 | NULL | ||
environment_status | varchar(60) | 是 | NULL | ||
mgmt_ip | 文字 | 是 | NULL | ||
ad_domain | 文字 | 是 | NULL | ||
所有者 | varchar(150) | 是 | NULL | ||
组织 | varchar(150) | 是 | NULL | ||
dev_poc | varchar(255) | 是 | NULL | ||
tech_poc | varchar(255) | 是 | NULL | ||
application_desc | varchar(255) | 是 | NULL | ||
关键性 | varchar(30) | 是 | NULL | ||
week_date | 日期 | 是 | NULL | ||
month_id | int(10) | 没有 | NULL | ||
年 | int(10) | 没有 | NULL | ||
创建日期 | 日期时间 | 没有 | NULL |
从表A中选择;
computer_name
从表B中选择
|| *computer_name* || *ip_address* || *os_type* || *operating_system* || *last_report_time* || *create_date* ||
|| listserv-test || www.xxx.yyy.zzz || Unknown - Linux Red Hat Enterprise Server 7.9 || Linux Red Hat Enterprise Server 7.9 (3.10.0-1160.24.1.el7.x86_64) || Mon, 19 Apr 2021 10:51:23 +0000 || 2021-04-20 08:41:05 ||
|| listserv-test || www.xxx.yyy.zzz || Unknown - Linux Red Hat Enterprise Server 7.9 || Linux Red Hat Enterprise Server 7.9 (3.10.0-1160.21.1.el7.x86_64) || Fri, 09 Apr 2021 13:31:38 +0000 || 2021-04-12 14:55:37 ||
|| listserv-test || www.xxx.yyy.zzz || Unknown - Linux Amazon Linux 2 || Linux Amazon Linux 2 (4.14.225-169.362.amzn2.x86_64) || Mon, 05 Apr 2021 10:58:18 +0000 || 2021-04-08 13:53:14 ||
|| listserv.yyy.zzz || www.xxx.yyy.zzz || Unknown - Linux CentOS 6.10 || Linux CentOS 6.10 (2.6.32-754.35.1.el6.x86_64) || Mon, 19 Apr 2021 10:44:05 +0000 || 2021-04-20 08:41:05 ||
|| listserv.yyy.zzz || www.xxx.yyy.zzz || Unknown - Linux CentOS 6.10 || Linux CentOS 6.10 (2.6.32-754.35.1.el6.x86_64) || Mon, 12 Apr 2021 10:44:52 +0000 || 2021-04-12 14:55:37 ||
|| listserv.yyy.zzz || www.xxx.yyy.zzz || Unknown - Linux CentOS 6.10 || Linux CentOS 6.10 (2.6.32-754.35.1.el6.x86_64) || Mon, 05 Apr 2021 10:59:32 +0000 || 2021-04-08 13:53:14 ||
答案 0 :(得分:0)
您可以像这样使用 join
:
select . . .
from a join
b
on a.computer_name = substring_index(b.computer_name, '@', 1);