查询含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)会显示为NULLLEFT JOIN departments ON ...:同理,不管员工的department_id是否有匹配的部门记录,员工行都会被保留- 注意移除了原查询中
FROM子句末尾多余的逗号,避免语法错误
执行这条查询后,你就能看到employee_id为3的Hari的记录,他的job_title和department_name会显示为NULL。
内容的提问来源于stack exchange,提问作者Dixon Chaudhary
相关产品推荐
相关产品推荐

