如何通过单SQL查询将approver表ID替换为用户姓名?
SQL查询方案:将审批表ID替换为对应用户姓名
你需要通过多次关联user表来分别获取下属、领导、主领导的姓名,使用LEFT JOIN可避免因某类ID不存在(比如无主领导)导致整条数据被过滤。
完整SQL语句
SELECT u1.full_name AS subordinate_name, u2.full_name AS leader_name, u3.full_name AS main_leader_name FROM approver a LEFT JOIN user u1 ON a.subordinate_id = u1.id LEFT JOIN user u2 ON a.leader_id = u2.id LEFT JOIN user u3 ON a.main_leader_id = u3.id;
关键说明
- 给每次关联的user表设置不同别名(
u1、u2、u3),区分不同的关联逻辑 - 选择
LEFT JOIN而非INNER JOIN:若approver表中某个ID字段为空或在user表无匹配,对应姓名会显示为NULL,而非丢弃整条记录 - 通过
AS给字段设置可读性更强的别名,便于识别各姓名对应的角色
如果需要保留approver表的原始ID字段,可在SELECT中补充:
a.id AS approver_id, a.subordinate_id, a.leader_id, a.main_leader_id,
内容的提问来源于stack exchange,提问作者dev user
相关产品推荐
相关产品推荐

