左连接,右连接,内连接(left join ,right join,inner join)
浅谈左连接,右连接,内连接(left join ,right join,inner join)
这个问题一直困扰着我,每次遇到就打擦边球,不正面应对。今天索性把这几个连接搞懂了,写下这篇博客,
让跟我遇到同样问题的人,不再困惑。
先谈谈内连接:假设表A与表B根据条件id进行内连接,就将A表中的每一行跟B表中的每一行进行匹配,
注意匹配的方式如下图所示:
注意:首先取出teacher表中的第一行(如上图标记的地方),与表student中的每一行进行匹配(根据studentid条件),
然后再取出teacher表中的第二行,与表student中的每一行进行匹配,一直到结束。
如果遇到不匹配的直接跳过,那么内连接得到的结果就是两表的匹配项的集合。
sql语句:select * from Teacher t1 inner join Student s1 on t1.StudentId=s1.Id
linq查询语句:from t1 in Teachers
join s1 in Students on t1.StudentId equals s1.Id
select new {t1,s1}
lambda表达式:Teachers.Join(Students,t1 => t1.StudentId,s1 => s1.Id, (t1, s1) =>new{t1=t1,s1=s1})
这里给大家推荐一款软件(LINQPad),由于现在写后台代码的时候,对数据库中的表进行操作,基本上不写sql语句了,
都通过linq语句来操作数据库。所以想判断自己写的linq语句写的对不对,以及结果是啥,都需要运行程序,不方便。
但是在LinqPad里不仅可以写sql还可以写linq来操作数据库。重点:我不是打广告呦。。。
左连接:返回左表中的所有行,如果左表中行在右表中没有匹配行,则结果中右表中的列返回空值。如下图所示
同样的还是先取表teacher中的第一行与表student表中的所有行来匹配,如果在表student中没有找到匹配项,
那么就返回teacher中的一行,外加student表中的一行,并且由于没有在student表中匹配到,所以这行以null值来填充。
sql语句:select * from Teacher t1 left join Student s1 on t1.StudentId=s1.Id
linq查询语句:from t1 in Teachers
join s1 in Students on t1.StudentId equals s1.Id into temp
from tt in temp.DefaultIfEmpty()
select new {t1,tt}
lambda表达式:Teachers.GroupJoin (Students,t1 => t1.StudentId, s1 => s1.Id,(t1, temp) =>new{t1 = t1, temp = temp})
.SelectMany (temp0 => temp0.temp.DefaultIfEmpty (),(temp0, tt) =>new{t1 = temp0.t1, tt = tt})
右连接: 返回右表中的所有行,如果右表中行在左表中没有匹配行,则结果中左表中的列返回空值。
这个地方与左连接几乎一致,我就不再继续写了。
这篇文章比较基础,仅以记录自己学习的点点滴滴,如果能给博友们解除疑惑,那最好了。
左连接,右连接,内连接(left join ,right join,inner join)的更多相关文章
- PHP左、右、内连接
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ...
- SQL中的连接可以分为内连接,外连接,以及交叉连接 。
SQL中的连接可以分为内连接,外连接,以及交叉连接 . 1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例, ...
- SQL Server中的连接查询【内连接,左连接,右连接,。。。】
在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ...
- SQL 四种连接查询(内连接、左连接、右连接、全连接)
下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. (1) JOIN: 如果表中有至少一个匹配,则返回行(inner join) (2) LEFT JOIN: 即使右表中没有 ...
- 关于数据库的左,右,内,外连接,Union和Union all---------笔记
1.左连接 select a.filed1,a.filed2,b.filed1 from a (左表) left join b(右表) on a.commonfiled = b.commonfiled ...
- [原创]java WEB学习笔记91:Hibernate学习之路-- -HQL 迫切左外连接,左外连接,迫切内连接,内连接,关联级别运行时的检索策略 比较。理论,在于理解
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate迫切左外连接和迫切内连接
•迫切左外连接: •LEFT JOIN FETCH 关键字表示迫切左外连接检索策略. –list() 方法返回的集合中存放实体对象的引用, 每个 Department 对象关联的 Employee ...
- oracle连接总结(内连接、外连接、自然连接,交叉连接,自连接)
1.简述 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合 ...
- SQL连接方式(内连接,外连接,交叉连接)
1.内连接.左连接.右连接.全连接介绍 內连接仅选出两张表中互相匹配的记录.因此,这会导致有时我们需要的记录没有包含进来.内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来. 左连 ...
- SQL Server中的连接查询(内连接、外连接、交叉连接)
在数据库查询中,经常会用到两个有关联的表进行查询,需要把两个表中的数据按照某些条件查出来,这时就可以使用连接查询 连接查询分为三种:内连接.外连接和交叉连接 1. 内连接 内连接inner join ...
随机推荐
- jQuery库介绍
一.jQuery是什么 jQuery是一个轻量级,兼容多浏览器的JavaScript库 jQuery能够简化JavaScript编程 二.jQuery的优势 1.一款轻量级的JavaScript框架 ...
- jquery中siblings方法配合什么方法一起使用
siblings() 获得匹配集合中每个元素的同胞,通过选择器进行筛选是可选的.接下来通过本文给大家介绍jQuery siblings()用法实例详解,需要的朋友参考下吧 siblings() 获得匹 ...
- abaqus6.14导出网格inp以及导入inp以建模
建好part,组装后,划分网格,然后建立job,之后write input就可以在工作目录生成刚才新建网格的单元和节点编号信息了. *Heading ** Job name: buildmodel M ...
- POJ3422费用流
Description: 一个N * N的奖赏地图,你可以走k次这个地图,但是每一次你走过一个有分的节点,你获得得分,但这个节点的得分都要清零,问你走k次地图的最大得分 Solution: 把得分变成 ...
- Transport Layer Protocols
1 End-to-end Protocols(端到端协议) 传输层协议往往是主机对主机(host-to-host)或者说是端到端(end-to-end).通常希望传输层协议可以提供如下service: ...
- ACM知识点分类
(知识点分类.看完想(╯‵□′)╯︵┻━┻) orz...一点点来吧.简单标记一下. 蓝色,比较熟悉,能够做. 蓝绿色,一般熟悉,需要加强 红色,(比个辣鸡.jpg) (标记完突然想打人...) 第一 ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- Swift5 语言指南(十五) 继承
类可以从另一个类继承方法,属性和其他特性.当一个类继承自另一个类时,继承类称为子类,它继承的类称为其超类.继承是一种基本行为,它将类与Swift中的其他类型区分开来. Swift中的类可以调用和访问属 ...
- ElasticSearch核心知识总结(二)
如何超出扩容极限,以及如何提升容错性 primary&replica自动负载均衡,6个shared,3个primary,3个replica,随着机器扩容,会被均衡分配到多台机器上 6个shar ...
- css 如何“画”一个抽奖转盘
主要描述的是如何运用 css 绘制一个抽奖转盘,并运用原生 js 实现转盘抽奖效果. 先来张效果图: 布局 一般来说,转盘一般有四个部分组成:外层闪烁的灯.内层旋转的圆盘.圆盘上的中奖结果.指针. 所 ...