在条件不满足的列中显示null

时间:2015-03-11 10:52:13

标签: sql

我有两张桌子

TRAINING_EMPLOYEE

enter image description here

TRAINING_DEPARTMENT

enter image description here

从这两个表中,我想要 TRAINING_EMPLOYEE 中除DEPARTMENT_ID之外的所有列以及 TRAINING_DEPARTMENT

中的DEPARTMENT_NAME列

我这样做

SELECT TE.EMPLOYEE_ID,TE.FIRST_NAME,TE.LAST_NAME,TO_CHAR(HIRE_DATE ,'DD-
MON-YYYY')HIRE_DATE,TD.DEPARTMENT_NAME FROM training_employee TE,
training_department TD  WHERE TE.DEPARTMENT_ID=TD.DEPARTMENT_ID;

我得到了这个  enter image description here

但我确实想要所有4行 TRAINING_EMPLOYEE 并且在Department_name上为null 的 “TRAINING_EMPLOYEE.DEPARTMENT_ID<> TRAINING_DEPARTMENT.DEPARTMENT_ID”

1 个答案:

答案 0 :(得分:2)

你想要一个left join。而且,这很难,因为您使用的是古老的连接语法并不能真正支持它。这是一个简单的规则:永远不要在from子句中使用逗号。始终使用明确的join语法:

SELECT TE.EMPLOYEE_ID, TE.FIRST_NAME, TE.LAST_NAME,
       TO_CHAR(HIRE_DATE, 'DD-MON-YYYY') as HIRE_DATE, TD.DEPARTMENT_NAME
FROM training_employee TE LEFT JOIN
     training_department TD 
     ON TE.DEPARTMENT_ID = TD.DEPARTMENT_ID;