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

不使用子查询如何从Agent表获取保单对应代理人的主管薪资?

调整逻辑

你当前的写法只关联了一次Agent表,取到的是售出保单的代理人本人的薪资,而非其主管的薪资。因为主管的信息也存储在Agent表中,只需要对Agent表做自连接即可实现需求,不需要子查询:

  • 给Agent表设置两个别名:a1对应售出保单的普通代理人,a2对应该代理人的上级主管
  • 新增关联条件:a1的上级主管编号 = a2的代理人编号
  • 薪资取a2的薪资字段即可

调整后的SQL(兼容你原有的隐式连接写法)

SELECT PolicyNo, InsuredName, a2.salary AS [Salary of Agent Supervisor]
FROM Agent a1,
     Agent a2,
     Policy,
     Insured
WHERE a1.AgentNo = Policy.AgentNo
  AND a1.SupervisorNo = a2.AgentNo
  AND Policy.InsuredNo = Insured.InsuredNo
  AND a1.Function <> "Manager"

更规范的显式JOIN写法(可读性更高)

SELECT 
  p.PolicyNo,
  i.InsuredName,
  a2.salary AS `Salary of Agent Supervisor`
FROM Policy p
INNER JOIN Agent a1 ON p.AgentNo = a1.AgentNo
INNER JOIN Agent a2 ON a1.SupervisorNo = a2.AgentNo
INNER JOIN Insured i ON p.InsuredNo = i.InsuredNo
WHERE a1.Function <> 'Manager'

注:如果你的Agent表中存储上级代理人编号的字段名不是SupervisorNo,替换成实际表中的对应字段名即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:39:04