You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并三条UNION查询,将员工、部门主管及保管人信息置于同一行?

可行,用多表JOIN就能实现

完全可以把原来三条UNION查询的结果合并到同一行输出,核心思路是用多表关联(JOIN)替代UNION的纵向拼接,一次性取出员工自身信息、部门主管姓名和保管人姓名。

实现示例(基于你提到的关联条件)

假设你的表结构大致如下:

  • c:员工基础信息表(emp_id为员工ID,包含员工姓名等字段)
  • d:员工附属信息表(EMP_NO与c.emp_id对应)
  • a:部门关联表(hod_id是部门主管ID,CUST_ID是保管人ID)

对应的整合查询SQL如下:

SELECT
    -- 员工自身信息
    c.emp_id AS 员工ID,
    c.emp_name AS 员工姓名,
    d.EMP_NO AS 员工编号,
    -- 部门主管姓名
    hod.emp_name AS 部门主管姓名,
    -- 保管人姓名
    cust.emp_name AS 保管人姓名
FROM
    c
-- 关联员工附属信息表
JOIN d ON d.EMP_NO = c.EMP_ID
-- 关联部门表获取主管和保管人ID(若员工与部门是通过dept_id关联,可替换为c.dept_id = a.dept_id)
JOIN a ON c.emp_id = a.hod_id OR c.emp_id = a.CUST_ID
-- 通过主管ID关联员工表取姓名
LEFT JOIN c hod ON a.hod_id = hod.emp_id
-- 通过保管人ID关联员工表取姓名
LEFT JOIN c cust ON a.CUST_ID = cust.emp_id;

关键说明

  1. 若要避免员工数据重复,建议调整部门表的关联条件(比如员工表有dept_id字段,用c.dept_id = a.dept_id替代OR逻辑)
  2. 使用LEFT JOIN可保证即使员工没有对应的主管或保管人信息,仍能输出员工自身数据,不会被过滤
  3. 替换示例中的表名、字段名,匹配你实际的数据库结构即可

内容的提问来源于stack exchange,提问作者Ziad Adnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 18:42:41