我有 2 个表,emp 和 dept(员工和部门)。 假设我想显示每个部门所有薪水的总和,我可以使用类似的东西:
select sum(sal), deptno
from emp
group by deptno
现在可以了,但是假设列表中有一个部门没有员工,我希望它也显示出来,我该怎么做?我试过连接,nvl 函数,但到目前为止运气不好。例如,这有效,但不会显示空部门:
select sum(emp.sal), dept.deptno
from emp, dept
where emp.deptno=dept.deptno
group by dept.deptno
在此先感谢您的帮助!
最佳答案
LEFT JOIN
可以解决这个问题:
select coalesce(sum(emp.sal),0), dept.deptno
from dept
left join emp on emp.deptno=dept.deptno
group by dept.deptno
您应该始终显式声明您的联接,以便您可以在需要时更改它们。隐式连接始终是 INNER JOIN
。
此外,当部门没有员工时,我使用 COALESCE
更改查询以显示 0
而不是 NULL
。
关于sql - 连接表时如何显示未使用的外键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7667073/