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

Oracle Live SQL查询HUNOLD同部门员工的正确JOIN写法求助

错误原因

你编写的SQL自连接逻辑存在问题:没有通过department_id关联两个员工实例,现有的连接条件e.last_name = 'HUNOLD'相当于把HUNOLD的单条记录和全表所有员工做笛卡尔积拼接,返回结果不符合需求。

正确实现

方案1:自连接实现(和你的原有思路匹配)

SELECT e.last_name, e.hire_date
FROM employees e
JOIN employees h 
  ON e.department_id = h.department_id
WHERE h.last_name = 'HUNOLD';

逻辑:用别名h指代姓氏为HUNOLD的员工记录,通过部门ID关联所有和他同部门的员工e,直接查询e的对应字段即可。

方案2:子查询实现(逻辑更直观)

SELECT last_name, hire_date
FROM employees
WHERE department_id = (
  SELECT department_id FROM employees WHERE last_name = 'HUNOLD'
);

逻辑:先通过子查询拿到HUNOLD所在的部门ID,再查询该部门下所有员工的对应字段即可。如果存在多名姓氏为HUNOLD的员工,把语句中的=替换为IN即可兼容。

扩展(如需返回部门名称)

如果需要同时展示所属部门名称,可以关联提供的departments表:

SELECT e.last_name, e.hire_date, d.department_name
FROM employees e
JOIN employees h ON e.department_id = h.department_id
JOIN departments d ON e.department_id = d.department_id
WHERE h.last_name = 'HUNOLD';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:06:06