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

如何创建多次引用另一张表的视图,将关联ID替换为对应名称?

解决方法:多次关联同一张表获取关联名称

你需要通过多次内联Users表来实现这个需求——因为ManagerId和SupervisorId都是引用Users.UserId的外键,所以我们可以分别为这两个关联创建不同的表别名,从而获取对应的FirstName。

完整SQL查询语句

SELECT
    u.UserId,
    u.FirstName,
    u.LastName,
    m.FirstName AS ManagerName, -- 替换原ManagerId为经理的名字
    s.FirstName AS SupervisorName -- 替换原SupervisorId为主管的名字
FROM Users u
INNER JOIN Details d ON u.UserId = d.UserId
INNER JOIN Users m ON d.ManagerId = m.UserId -- 关联经理的用户信息
INNER JOIN Users s ON d.SupervisorId = s.UserId; -- 关联主管的用户信息

关键点解释:

  • 给Users表起了三个别名:u(当前用户)、m(经理)、s(主管),这样就能区分三次关联的同一张表
  • 通过d.ManagerId = m.UserId把Details里的经理ID和Users表对应的用户关联起来,取m.FirstName作为经理名称
  • 同理,d.SupervisorId = s.UserId关联主管ID和对应的用户,取s.FirstName作为主管名称

查询结果(和你的预期一致):

UserIdFirstNameLastNameManagerNameSupervisorName
1JohnWickLebronBlack
2BlackPantherLebronJohn
3LebronJamesLebronJohn

如果你希望保留原字段名(比如还是叫ManagerId和SupervisorId,只是值换成名字),可以把别名改成AS ManagerId和AS SupervisorId,不过从语义上来说,改成ManagerName这类更清晰的名字会更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:40:00