知易网
白蓝主题五 · 清爽阅读
首页  > 硬件维护

SQL查询两表合并:硬件维护中的实用技巧

在日常的硬件维护工作中,数据库操作越来越常见。比如公司机房的设备台账和维修记录分别存在两张表里,想查某台服务器的历史维修情况,就得把这两张表的数据合并起来看。这时候,SQL查询两表合并就成了必备技能。

为什么需要合并两张表?

举个例子,一张表叫 hardware_list 存的是设备基本信息:编号、型号、购置时间;另一张表叫 maintenance_log 记的是每次维修详情:设备编号、故障描述、处理人。光看其中一张,信息都不完整。只有通过设备编号把它们连起来,才能看到全貌。

用 JOIN 连接两张表

最常见的合并方式是使用 JOIN。假设我们想查出每台设备的型号和它的所有维修记录,可以这样写:

SELECT h.model, m.fault_desc, m.handler 
FROM hardware_list h 
JOIN maintenance_log m ON h.id = m.device_id

这里的 ON h.id = m.device_id 是关键,它告诉数据库哪两个字段对应得上。如果某台设备还没修过,这条记录就不会出现在结果里。要是你想连没修过的也列出来,就把 JOIN 换成 LEFT JOIN

什么时候用 UNION?

上面说的是“横向拼接”,也就是把两表相关联的字段合在一起。但有时候你需要“纵向追加”,比如两个部门各自上报了设备清单,格式一样,现在要合成一个总表。这时候就该用 UNION 了。

例如:

SELECT id, model, purchase_date FROM dept_a_devices 
UNION 
SELECT id, model, purchase_date FROM dept_b_devices

注意,UNION 要求前后查询的字段数量和类型一致,而且默认会去重。如果你允许重复数据,比如同一台设备报了两次,那就用 UNION ALL

实际场景小贴士

在导出老旧系统数据做迁移时,经常遇到表结构不统一的情况。建议先用 SELECT TOP 5 * 查查看两边字段对不对得上,别一上来就跑全量合并,不然出错了还得重来。

还有,别忘了加筛选条件。比如只想查过去一年的维修合并数据,在最后加上 WHERE m.repair_date >= '2023-01-01',能省不少时间和资源。