使用SQL Query检索具有空值的记录时遇到的问题

时间:2018-05-17 10:29:06

标签: mysql sql oracle select

我面临的问题是获取员工的记录,该记录由某些特定列中的空值组成。

情境:

我有下表:

employee_id      Name       job_id      department_id
(int)           (varchar)    (int)        (int)
-------------------------------------------------------
1                Sita         1             4
2                Ram          3             5
3                Hari       (null)        (null)

选择员工记录的查询如下:

        SELECT 
            employees.EMPLOYEE_ID,
            employees.Name,
            jobs.job_title,
            departments.department_name,
        FROM
            employees,jobs,departments
        WHERE
            jobs.job_id=employees.job_id 
            AND departments.department_id=employees.department_id 

测试完成:

通过上述查询,我​​可以获取employee_id = 1和employee_id = 2的员工的记录。

面临的问题:

但是使用相同的查询,我无法获取employee_id = 3的员工记录。

必修结果:

应显示employee_id = 3的记录。

我需要做出哪些更正才能获得理想的结果?

1 个答案:

答案 0 :(得分:2)

从不FROM子句中使用逗号。 始终使用正确,明确,标准的JOIN语法。

您只需要一个LEFT JOIN

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