关键时候这个语法可以帮大忙
上例子:
http://zhidao.baidu.com/question/354682777.html
一般所说的左连接,外连接是指左外连接,右外连接。做个简单的测试你看吧。 先说左外连接和右外连接: [TEST1@orcl#16-12月-11] SQL>select * from t1; ID NAME ---------- -------------------- 1 aaa 2 bbb [TEST1@orcl#16-12月-11] SQL>select * from t2; ID AGE ---------- ---------- 1 20 3 30 左外连接: [TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 2 bbb 右外连接: [TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 3 30 从上面的显示你可以看出:左外连接是以左边的表为基准。通俗的讲,先将左边的表全部显示出来,然后右边的表id与左边表id相同的记录就“拼接”上去,比如说id为1的记录。如果没有匹配的id,比如说t1中id为2的t2中就没有。那边就以null显示。 右外连接过程正好相反。 再看内连接: [TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id; ID NAME ID AGE ---------- -------------------- ---------- ---------- 1 aaa 1 20 看到没有? 只有一条记录。内连接就是只取出符合过滤条件的记录 也就是t1.id=t2.id 那么符合t1.id=t2.id的记录只有id=1这一条,所以只显示一条。 不像外连接,是将你作为基准的表(左外连接就是左边表为基准,右外连接就是右边表为基准)的所有行都显示出来。
多表连接:
http://blog.csdn.net/hitprince/article/details/2157442
CPM_TASK_RES表有三个外键,对应CPM_RES_SORT,CPM_RES_TYPE ,CPM_RES 这三个表的主键,想像两个表左连接那样实现四个表的做连接:
方法如下:
select a.Task_Code, a.Project_Code, a.Res_Num, a.ResSort_Code, b.ResSort_Name,
a.ResType_Code, c.ResType_Name, a.Res_Code, d .Res_Name
from CPM_TASK_RES as a left join CPM_RES_SORT as b on a.ResSort_Code=b.ResSort_Code left join CPM_RES_TYPE as c on a.ResType_Code=c.ResType_Code left join CPM_RES as d on a.Res_Code=d.Res_Code
http://bbs.csdn.net/topics/10163331
select A.COLA,B.COLB,C.COLC.D.COLD
from A
left outer join B on A.COLA=B.COLB
left outer join C on A.COLA=C.COLB
left outer join D on A.COLA=D.COLB