合并 2 个不同的 SQL 结果

时间:2021-04-21 14:55:40

标签: mysql sql

我在 MySQL/MariaDB 中有 2 个不同的表,它们具有关于计算机系统的不同数据。 computer_name 有一个公共字段,但对于同一台计算机,该字段的内容可能不同。在 TableA 中,computer_name 可以是“hostname”,而在 TableB 中,computer_name 可以是“hostname@dom1.domain”。我需要查看 col1 中的 col2col3TableA 和 {{1} 中的 col5col6col7 } 其中 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 ||

1 个答案:

答案 0 :(得分:0)

您可以像这样使用 join

select . . .
from a join
     b
     on a.computer_name = substring_index(b.computer_name, '@', 1);
相关问题