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

SQL优先查employee_region 缺失则取department_region匹配记录

SQL查询获取员工关联区域数据(员工区域配置优先级高于部门配置)

核心规则

  • 关联两张区域表:employee_region(员工专属区域表)、department_region(部门通用区域表)
  • employee_region关联条件为employee.id = employee_region.id,表内数据优先级高于department_region
  • 某区域在employee_region无匹配记录时,默认取department_region中同区域的分值
  • 预期返回2条结果:
    • SOUTHWEST 8745829483:员工表有该区域配置,取员工表分值
    • NORTHWEST 3125533132:员工表无该区域配置,取部门表分值

测试用表结构&数据

  • EMPLOYEE(员工表)
IDDEPT_ID
1234a059d6a-b086-462b-a5b4-49a725a16c60
  • EMPLOYEE_REGION(员工区域表)
IDREGIONSCORE
123SOUTHWEST8745829483
  • DEPARTMENT(部门表)
IDNAMEPHONE
4a059d6a-b086-462b-a5b4-49a725a16c60SALES673-348-2928
  • DEPARTMENT_REGION(部门区域表)
IDREGIONSCORE
4a059d6a-b086-462b-a5b4-49a725a16c60SOUTHWEST1111111111
4a059d6a-b086-462b-a5b4-49a725a16c60NORTHWEST3125533132

实现SQL

实现逻辑:先拉取员工所属部门下的全部区域作为基础数据集,左连员工专属区域配置,用COALESCE优先取员工配置的非空分值。

SELECT
    dr.region,
    COALESCE(er.score, dr.score) AS score
FROM
    employee e
INNER JOIN department_region dr 
    ON e.dept_id = dr.id
LEFT JOIN employee_region er 
    ON e.id = er.id 
    AND dr.region = er.region
WHERE
    e.id = 123;

执行结果

REGIONSCORE
SOUTHWEST8745829483
NORTHWEST3125533132

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:21:27