有关SQL的外连接和内连接
时间:2010-11-30 来源:AndroidW
1、外连接:包括左向外联接、右向外联接或完整外部联接
1.1 左连接:left join 或 left outer join
例:select * from ta left join tb on ta.id=tb.id
结果为:
id name id password
1 ZhangSan 1 111
2 LiSi 2 222
3 WangWu null null
返回结果包含表ta的所有子句,根据指定条件返回tb相应的字段,不符合的显示null。
1.2 右连接:right join 或 right outer join
例:select * from ta right join tb on ta.id=tb.id
结果为:
id name id password
1 ZhangSan 1 111
2 LiSi 2 222
null null 4 444
返回结果包含表tb的所有子句,根据指定条件返回ta相应的字段,不符合的显示null。
1.3 完整外部联接: full join 或 full outer join
例:select * from table1 full join table2 on table1.id=table2.id
结果为:
id name id password
1 ZhangSan 1 111
2 LiSi 2 222
3 WangWu null null
null null 4 444
2、内连接:内联接是用比较运算符比较要联接列的值的联接。 join 或 inner join
例:select * from ta join tb on ta.id=tb.id
结果为:
id name id password
1 ZhangSan 1 111
2 LiSi 2 222
只返回符合条件的结果。等价于语句 select a.*,b.* from ta a,tb b where a.id=b.id
3、交叉连接:没有 WHERE子句的交叉联接将产生联接所涉及的表的笛卡尔积。cross join (不带条件where...)
例:select * from ta cross join tb
结果为:
id name id password
1 ZhangSan 1 111
2 LiSi 1 111
3 WangWu 1 111
1 ZhangSan 2 222
2 LiSi 2 222
3 WangWu 2 222
1 ZhangSan 4 444
2 LiSi 4 444
3 WangWu 4 444
执行结果等价于select * from ta, tb