很多时候,我们使用左连接或者右连接都是为了简单的匹配我们需要连接的某张表里对应的数据
简单是因为只有一个约束条件,类似于a.id=b.id(+)的写法。但当我们需要对表添加多重约束的时候
可能会出现一些问题,如:造成左连接中左边数据的丢失或右连接中右边数据的丢失。
接下来就对这一问题进行讲解。
存在两张表 。
dept表
create table dept
(
deptno int primary key, --部门编号
dname nvarchar(30),--部门名称
loc nvarchar(30) --地址
)
emp表
create table emp
(
empno int primary key,--雇员编号
ename nvarchar(30),--雇员姓名
job nvarchar(30),--雇员职务
mgr int,--雇员上级编号
hiredate datetime,--雇佣日期
sal numeric(10,2),--薪水
comm numeric(10,2),--奖金
deptno int foreign key references dept(deptno) --因为deptno我们根据需要做成外键
)
例如:以左连接为例,如果我们只是想简单的根据雇员所在部门的编号查询部门名称。
那么我们只需要简单的这样写
select empno,ename,job,deptno,dname from emp left join dept on emp.deptno=dept.deptno;
--或者这样写
select empno,ename,job,deptno,dname from emp,dept where emp.deptno=dept.deptno(+);