MySql——join

1.Left Outer Join左外连接

设数据库中有A、B两表,A和B有共同的交集C,当我们想查询出A的所有记录时我们可以使用左外连接:
select <select_list> from TableA A Left Join TableB B on A.key=B.key

1.png

当我们只想查询出只有A表才有的数据而B表没有的数据时,即去掉集合C
select <select_list> from TableA A Left Join TableB B on A.key=B.key where B.key is NULL

2.png

2.右外连接

右外连接与左连接是类似的,只是我们把哪个表看为基础表的区别而已。左外连接将A作为基础表,右连接我们把B作为基础表。在A、B表中,查询出B表的所有记录
select <select_list> from TableA A Right Join TableB B on A.key=B.key

3.png

只查询出B表存在而A表没有的记录
select <select_list> from TableA A Right Join TableB B on A.key=B.key where B.key is NULL

4.png

3.全连接

当需要查询出A、B两表的所有数据时可以使用全链接(Full Join)但在Mysql中是不支持Full Join的。但我们可以通过左连接+右连接的联合达到Full Join的效果,即:
select <select_list> from TableA A Left Join TableB B on A.key=B.key UNION ALL select <select_list> from TableA A Right Join TableB B on A.key=B.key

4.交叉连接

交叉连接(cross join)又称为笛卡儿积连接(cartesian join)或差乘,如果A和B是两个集合,它们的交叉连接记为:A x B。即A表中的一条记录与B表中每一条记录进行匹配,产生一个新的结果集。如果A中有4条记录,B中有5条记录,则会产生20条结果
select <select_listA>,<select_listB> from TableA A CROSS JOIN TableB B

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,864评论 0 10
  • 50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cna...
    最美的太阳WW阅读 3,240评论 0 23
  • 5月27日,下午,今天,我利用下午辛勤训练时间,让自己完成了一下,比较伟大的任务,那就是5公里,5公里对于普通人来...
    zd0591阅读 333评论 0 0
  • 诗文: 许永杰 摄影: 冯均仓 2017年4月16日,铜川新区牡丹园春意盎然,百花竟艳,这里举办了...
    许永杰阅读 587评论 0 2
  • 【经典名句分享】 无论外部条件如何变化,幸福其实一直就在每个人身边。如果能够抱有感恩之心,认为“我现在是幸福的”,...
    玉_莲子阅读 196评论 0 0