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

SQL动态查询编写:获取带经理姓名的员工列表

解决自关联员工表的经理姓名查询问题

这是个很常见的自关联表查询场景,咱们用**自连接(Self-Join)**就能轻松实现需求。

首先先确认下你的表结构:

CREATE TABLE employee ( 
    id INTEGER, 
    manager INTEGER, 
    name TEXT, 
    FOREIGN KEY(manager) REFERENCES employee(id) 
);

核心查询语句

这里咱们给同一个表起两个别名,分别代表「员工」和「经理」,通过manager字段关联起来:

SELECT 
    e.id AS employee_id,
    e.name AS employee_name,
    COALESCE(m.name, '无上级经理') AS manager_name -- 可选:把NULL替换成更友好的文本
FROM employee e
LEFT JOIN employee m 
    ON e.manager = m.id;

关键细节说明

  • 用LEFT JOIN而不是INNER JOIN:这样能保留所有员工,包括那些没有上级经理(manager字段为NULL)的人。如果只想要有经理的员工,直接把LEFT JOIN换成INNER JOIN即可。
  • COALESCE函数是可选的:如果不想让无经理的员工显示NULL,可以用这个函数把NULL替换成比如「无上级经理」这类更易读的文本。
  • 别名的使用:e代表员工(employee),m代表经理(manager),这样能清晰区分同一个表的两个实例,避免字段混淆。

测试示例

如果插入一些测试数据:

INSERT INTO employee VALUES 
(1, NULL, 'John Doe'), -- 顶级管理者
(2, 1, 'Jane Smith'),
(3, 1, 'Bob Johnson'),
(4, 2, 'Alice Williams');

执行查询后会得到这样的结果:

employee_idemployee_namemanager_name
1John Doe无上级经理
2Jane SmithJohn Doe
3Bob JohnsonJohn Doe
4Alice WilliamsJane Smith

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:05:29