left join ,right join ,inner join ,cross join 区别(参考:http://zhidao.baidu.com/link?url=gpOl9HXZR0OrQuys04oH3f8guGQFZBUNs7kd4JWbUcDVbflB4qe1LJnLbfWXa7-CjfDWhzgK5T26-FZpZwVqLq)
举个简单的例子吧,从结果来理解比较具体些。a表name sex张三 男李四 女 b表name age李四 30王五 23 1\全外连接select a.name,a.sex,b.name,b.agefrom a full outer join b on a.name=b.name结果如下,name sex name age张三 男 NULL NULL李四 女 李四 30NULL NULL 王五 23关联字段name,左表有而右表没有的,如张三,b.name,b.age都为NULL,加上左右两边都有的就是左连接的结果;而右表有而左表表没有的,如王五,a.name,a.sex都为NULL,加上左右两边都有的就是右连接的结果;左右两边都有的如,李四,这就是内连接。相见如下2\左select a.name,a.sex,b.name,b.agefrom a left outer join b on a.name=b.name结果如下name sex name age张三 男 NULL NULL李四 女 李四 302\右select a.name,a.sex,b.name,b.agefrom a right outer join b on a.name=b.name结果如下name sex name age李四 女 李四 30NULL NULL 王五 233\内联select a.name,a.sex,b.name,b.agefrom a inner join b on a.name=b.name结果如下name sex name age李四 女 李四 30 4\交叉(用mysql没测试出来,和inner join结果 一样,有看到的请指教)select a.name,a.sex,b.name,b.agefrom a cross join b on a.name=b.name结果如下name sex name age张三 男 李四 30李四 女 王五 23张三 男 王五 23李四 女 李四 30 (http://blog.csdn.net/zhuxinhua/article/details/5815910)
时间: 2024-11-09 06:27:59