SQL开发技巧 join从句

来源:互联网 发布:java设计模式分类方法 编辑:程序博客网 时间:2024/05/16 07:59

SQL标准中 join的类型

1、内连接 (INNER)

2、全外连接(FULL OUTER)

JOIN 3、左外连接(LEFT OUTER)

4、右外连接 (RIGHT OUTER)

5、交叉连接 (CROSS)

首先准备两张表     西天取经四人组 和 悟空的朋友们  

      


1、INNER JOIN (内连接)

内连接基于连接谓词 将两张表的列组合到一起,产生新的结果表

执行:select * from fourmangroup a inner join wukongFriends b on a.user_name=b.user_name 

结果:


2、LEFT OUTER JOIN (左外连接)

查询取经四人组中哪些人不是悟空的结拜兄弟

执行:select * from fourmangroup a left join wukongFriends b on a.user_name=b.user_name 

结果:查出A表中所有数据,并且与B表没有关联的项将被置为空


3、RIGHT OUTER JOIN(右外连接)

与左外连接正好相反  ,结果会保留b表中的中的所有数据 ,和a表没有关联的项将被置为空

执行:

4、FULL JOIN(全连接)

查询出A表和B表中所有的数据,或查询出A表和B表所有的数据并将重复部分给过滤掉。

注意:在mysql中默认是不支持FULL JOIN的   会报出1604的错误

转化思想:左连接的结果+右连接  =全连接   

left join   。。。。。。 uinon all   ....     right   join ....

执行:select * from fourmangroup a left join wukongFriends b on a.user_name=b.user_name 
union all
select * from fourmangroup a right join wukongFriends b on a.user_name=b.user_name where b.user_name is not null

结果:

5、Cross JOIN(交叉连接)

又称笛卡尔连接或叉乘,即A表2条记录,B表3条记录,则结果为2*3   6条记录

执行:select * from fourmangroup a cross join wukongFriends b 

结果:


原创粉丝点击