问题
在查询中添加连接并确保不影响其他连接。
解决方案
使用标量子查询(放在 SELECT 列表中的子查询)来模拟外连接。使用标量子查询的解决方案适用于所有平台。
select e.name,
d.loc,
(select eb.received
from emp_bonus eb
where eb.empno = e.empno) as received
from emp e,
dept d
where e.deptno = d.deptno
order by 2
也可以使用外连接来获得额外的信息,同时避免返回的数据比原来的查询少。适用于 DB2、MySQL、PostgreSQL 和 SQL Server。
select e.name, d.loc, eb.received
from emp e
join dept d
on (e.deptno = d.deptno)
left join emp_bonus eb
on (e.empno = eb.empno)
order by 2
扩展
嵌套在 SELECT 子句中的 SELECT 子句被称为标量子查询,它们只能返回一个值。要绕过这种限制,在Oracle数据库中,可以使用 Oracle 对象类型。
外连接可以返回一张表中的所有行以及另一张表中与之匹配的行。它不会删除任何原本返回了的行。
点个赞吧,这对我非常重要!