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

查询含NULL值员工记录的SQL问题及修正咨询

解决NULL值员工记录无法查询的问题

嘿,我清楚你碰到的问题了——你当前使用的是隐式内连接(通过逗号分隔表的写法),这种连接方式只会返回所有关联表中都存在匹配数据的行。而employee_id为3的Hari,他的job_id和department_id都是NULL,在jobs和departments表中找不到对应的匹配项,所以这条记录被自动过滤掉了。

要保留所有员工记录(包括那些job或department字段为NULL的),你需要改用左外连接(LEFT JOIN),它会以employees表为主表,即使关联的jobs或departments表没有匹配数据,也会保留员工的行,对应的关联字段会显示为NULL。

修正后的查询语句

SELECT 
    employees.EMPLOYEE_ID, 
    employees.Name, 
    jobs.job_title, 
    departments.department_name
FROM employees
LEFT JOIN jobs ON jobs.job_id = employees.job_id
LEFT JOIN departments ON departments.department_id = employees.department_id;

关键说明

  • LEFT JOIN jobs ON ...:确保即使员工的job_id是NULL,也会保留该员工记录,jobs表对应的字段(比如job_title)会显示为NULL
  • LEFT JOIN departments ON ...:同理,不管员工的department_id是否有匹配的部门记录,员工行都会被保留
  • 注意移除了原查询中FROM子句末尾多余的逗号,避免语法错误

执行这条查询后,你就能看到employee_id为3的Hari的记录,他的job_title和department_name会显示为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:17:23