【问题标题】:Issue faced while retrieving the record having null value with SQL Query使用 SQL 查询检索具有空值的记录时面临的问题
【发布时间】:2018-10-27 14:08:22
【问题描述】:

我在获取包含某些特定列中的空值的员工记录时遇到问题。

场景:

我有下表:

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 的记录。

我需要怎样的修正才能得到我想要的结果?

【问题讨论】:

  • 只使用左连接
  • 您使用的是 MySQL 还是 Oracle? (不要为不涉及的产品添加标签。)
  • 今日提示:切换到现代、明确的JOIN 语法。更容易编写(没有错误),更容易阅读和维护,如果需要更容易转换为外连接!

标签: mysql sql oracle select


【解决方案1】:

从不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;

【讨论】:

  • 非常感谢您的宝贵建议。
  • @YogeshSharma 。 . .谢谢。
猜你喜欢
  • 2020-07-11
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
相关资源
最近更新 更多