今天遇到一个逻辑很复杂的SQL,虽然写出来了,但是并没有完全体会,找了找资料,算是摸清楚了left join和inner join 的实际意义。

感谢PCJIM的文章,写的非常明白,原文地址:http://www.cnblogs.com/pcjim/articles/799302.html。

实际上,join的作用在于将2个表组合起来成为一个新表,如何组合,完全看是使用什么join。

inner join,属于等值连接,我有表A和表B,其中A.Column1和B.Column1作为连接条件,即

select

*

from A inner join B

on A.Column1 = B.Column1

那么,根据条件,SQL会将等值的表A表B组合起来得出以下格式:

A.Column1  A.Column2  A.ColumnX...  B.Column1  B.Column2  A.ColumnX...

  1      xxx      xxx        1      xxx      xxx

  2      xxx      xxx        2      xxx      xxx

而left join则仅仅以左表作为连接标准。

什么是左表?select * from A left join B on A.Column1 = B.Column1中的A即为左表(left的左边即左表咯)

最后SQL会将A和B全部信息组合为一个新表,如下所示

A.Column1  A.Column2  A.ColumnX...  B.Column1  B.Column2  A.ColumnX...

  1      xxx      xxx        1      xxx      xxx

  2      xxx      xxx        2      xxx      xxx

  3      xxx      xxx        null     null      null

从上面格式看出,当B表中的Column 1不存在A表中Column的时候,SQL会返回null 信息来和A表组合成一个记录。

以上得出的结论呢,我更想表达的是join是将2个表合成为一个新的表,

在实际应用中,我们不单单是只用一个join,有时候,需要通过A和B的join得到一个表C,之后再用表D去joinC得到一个新表,

从新表得到我们想要得到的信息去做别的操作(今天就遇到这破逻辑........关键还是的把ER图画好啊......搞不清关系SQL是无法向下写下去的)

关于left join 和 inner join的更多相关文章

  1. mysql join 和left join 对于索引的问题

    今天遇到一个left join优化的问题,搞了一下午,中间查了不少资料,对MySQL的查询计划还有查询优化有了更进一步的了解,做一个简单的记录: select c.* from hotel_info_ ...

  2. 【转】mysql的union、left join、 right join、 inner join和视图学习

    1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 ...

  3. SQL Left Join, Right Join, Inner Join, and Natural Join 各种Join小结

    在SQL语言中,存在着各种Join,有Left Join, Right Join, Inner Join, and Natural Join等,对于初学者来说肯定一头雾水,都是神马跟神马啊,它们之间到 ...

  4. sql语法:inner join on, left join on, right join on详细使用方法

    inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...

  5. sql之left join、right join、inner join的区别

    sql之left join.right join.inner join的区别 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括 ...

  6. SQL中inner join、outer join和cross join的区别

    对于SQL中inner join.outer join和cross join的区别简介:现有两张表,Table A 是左边的表.Table B 是右边的表.其各有四条记录,其中有两条记录name是相同 ...

  7. SQL JOIN\SQL INNER JOIN 关键字\SQL LEFT JOIN 关键字\SQL RIGHT JOIN 关键字\SQL FULL JOIN 关键字

    SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据. Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果.我们就需要执行 join. 数据库中的表 ...

  8. SQL表连接查询(inner join、full join、left join、right join)

    SQL表连接查询(inner join.full join.left join.right join) 前提条件:假设有两个表,一个是学生表,一个是学生成绩表. 表的数据有: 一.内连接-inner ...

  9. MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)

    注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...

  10. 实现Map-side Join和Reduce-side Join(转)

    在大数据处理场景中,多表Join是非常常见的一类运算.为了便于求解,通常会将多表join问题转为多个两表连接问题.两表Join的实现算法非常多,一般我们会根据两表的数据特点选取不同的join算法,其中 ...

随机推荐

  1. 页面打开直接执行a点击事件

    <script> window.onload = function(){ function autoclick(){ var url = document.getElementById(' ...

  2. knockout+echarts

    knockout+echarts实现图表展示   v一.需要学习的知识 knockout, require, director, echarts, jquery.简单的入一下门,网上的资料很多,最直接 ...

  3. Linux系统管理员:不要害怕升级内核

    Linux系统管理员平时很重要的一项工作就是负责系统内核升级.做好系统内核的升级工作,对于Linux系 统的稳定性具有至关重要的作用.但是很少有人敢贸然的对Linux系统的内核进行升级,担心会影响现有 ...

  4. div图片垂直居中

    div相对与table对于图片的垂直居中支持的并不好,特别对于不同浏览器的兼容性来说,这里我们看下一个简洁的css解决方法: 在曾经的 淘宝UED 招聘 中有这样一道题目: “使用纯CSS实现未知尺寸 ...

  5. Finding the Longest Palindromic Substring in Linear Time

    Finding the Longest Palindromic Substring in Linear Time Finding the Longest Palindromic Substring i ...

  6. 跟我一起学extjs5(19--模块记录的拖放删除、拖放复制新增)

    跟我一起学extjs5(19--模块记录的拖放删除.拖放复制新增)         网页其中的拖放(drag-drop)是比較有趣的操作,extjs5中非常好的封装了拖放的动作,也有各种类来支持,可是 ...

  7. C++中delete 和delete[]的区别

    c++告诉我们在回收new分配的单个对象的内存空间的时候用delete,   回收new[ ]分配的一组对象的内存空间的时候用 delete[ ]; #include <iostream> ...

  8. linux线程之pthread_join

    pthread_join使一个线程等待另一个线程结束. 代码中如果没有pthread_join:主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了.加入pthread_joi ...

  9. 如何:打开 IIS 管理器

    大家好,我叫李京阳,,很高兴认识大家,因为最近我发现很多朋友连打开IIS管理都不知道,可能也是因为各个系统的版本不同,所以今天发一简单贴说说打开IIS管理器. 启动 IIS 7.0 的 IIS 管理器 ...

  10. ashx页面中context.Session["xxx"]获取不到值的解决办法

    在 aspx和aspx.cs中,都是以Session["xxx"]="aaa"和aaa=Session["xxx"].ToString()进 ...