SQL 中的join

连接(join)可分为这几种:
左(外)连接left (outer) join,右(外)连接right (outer) join,全(外)连接full (outer) join,内关联 (inner)  join,交叉连接 cross join 。
left (outer) join 是以左表为主表,右表为辅表,结果集为左表所有数据列,根据左右表的匹配条件,如果右表中存在匹配row,则在返回的数据集中返回匹配到的字段,否则返回null。left join比较常用,常用于基本数据表和配置信息表的匹配。比如左表是 以station为主键,其余字段为数值类型,右表也是以station为主键,其余字段是对station字段的说明信息,联合查询的时候 就可以用到left join。
right (outer) join 与 left (outer) join 恰好相反。比较少用到。
full(outer) join 则是 左表和右表都为主表,结果集是左表和右表所有匹配到和为匹配到的row的集合。未匹配到的字段为null。比如匹配条件为t1.station = t2.station ,左表存在station='cq',而右表中不存在,则station='cq'所在的行,t2.* 都为null,反之亦然。
(inner) join 与左连接的区别仅仅是 返回的结果集 不包含未匹配到辅表的 row,即不存在辅表字段匹配后变成null的情况。等效于 select * from t1,t2 where t1.station = t2.station。一般来说内连接也常用。与left join相比优点是 可以过滤掉配置表中不存在的字段的数据(这种数据一般是脏数据)。
cross join 是没有where条件的inner join,即select * from t1,t2。做笛卡儿乘。

posted @ 2006-12-05 18:12  jacktu  阅读(352)  评论(0编辑  收藏  举报