Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)

时间:2021-08-23 04:28:34

我们知道在SQL中一共有五种JOIN操作:INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN

1>先创建两个表Group、User,两表的关系是N:N

aaarticlea/png;base64,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" alt="" />

CREATE TABLE [dbo].[Group](
[Id] [int] IDENTITY(,) NOT NULL,
[GroupName] [nvarchar]() NULL,
CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] CREATE TABLE [dbo].[User](
[Id] [int] IDENTITY(,) NOT NULL,
[UserName] [nvarchar]() NULL,
[GroupId] [int] NULL,
CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

2>测试数据

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAABOCAIAAAD98V7FAAAFZUlEQVR4nO2dwW7aShSGz2PkJVghRkF5i7BNNibKA0RssmRpiIQipK69YlnjLu4rZFOpDYi7Qbpt2jTNXdWkgMEY3bswhvFwbGWaUFP5P/oWxh7j4fhjBpsTQqPRyLKsEQLxgiBv5luW9R/iefH09JR1F/YxoJFeQCM2oJFejEajrLuwjwGN9AIasaGv0bBVLreGO+vQngc0YiNZo2GrTGGc/6Wsz7FGrusmbdokjOh1MjRsleWn2uPMp45GbL/3+MX8hvjx4we7ftgqx074+WukaNgql8/P1+ne48yvNFosAm/mqwyuhLjqr5fX77X1ypwRBMvvj/9yuXpn0GFjwGSvUSWis24sgdFDObfiqj+4EuLMiBoZTrTeOaPqO/l09JuH0Zk4bAzC9asdDefvhoh2jx10q3uvykojfxFMvblKvylEs+fNp55jEBldZWXuCILlt4fvTK7YnPSbYp00KYG9hiDDie0SLvebgoTZn0+9+bRbJaraURvbIKPLHaVbXT1VuGO3SusF0ex5jkFVO6WHr8fzNNp+zVmf0UxYLpf33x5SNRqY4ds/1IJNWr8pJEU2W2OJdQwSZjeef/l0bGaG+HqlPckRKbUDIo38xWQ6U+k1hWj25AVlOWcEy+XX+wcuV45BwuzF85aUtF5TUNXe3hpLrGOQMO3Nmp4pDDNqtj6WsqOy8BvP1PM0ktLUMwVBo61NsbTwWpBhRy0NZyWTvK/c3q6qa6aOEY49vZhblKKRdNBds9Jo7i/GEy9Gr1GKPu29nXhj2wgflAyjJBq3SuN8EATLuy/3TK4m3nji3ZqbOaRk9se9RixRSj6l9quUbhpEbZRnsA0SjduJ99YgdcewGbuwmf52eNZWGs3m/s/xFKQTBMvPd193latbs1QyP2b9Gn+NSKOZ//RzAtIJguDT5y+7ytVHs1QyP2T9Gn+NlUbebD56GoN0FkHwz6c75GqblUYDBOIFsb6LjXhW+L6fdRf2MchCIF4ctFgsLMt6//gBPAfXdTPvwx4CjfSARizQSA9oxAKN9IBGLNBID2jEAo30gEYs0EgPaMSSpFH7pFhzsu7cHrKlkXNRJCrW7Kw7li2MRk69cEB0AI04VI1uaoVi5bhYuLjJvm8ZkjAa3dSOoBGHopFdLxTqzvUpFepO5n3LEGikR1wj5yIchzqVnM9r0EiPmEY3tcLKnvYx5Xpeg0Z6yBrZ9YL8hxd5ntegkR6SRs5FkY470aZ8z2vJV2pEB0QnnV0d+A9lo9FmRgvJ9byG24964PYjCzTSAxqxQCM9oBELNNIDGrFAIz2gEQv5vm9ZlotAvCAwGunhYjTigEZ6QCMWaKQHNGKBRnpAIxZopAc0YoFGekAjFmikBzRi2dLopnYUfb1/lOMCmiRc+Rt+qdjoON+lEFsadSpRcUj7hAqXea18SMJlC0XUopHckTKpOZdFaKTCa9Sp0Gk7875lSLJGKIDkSJjU8luwFpL8546Y0TgwqbGwGsGhRHiNHtvHVLnOum8Zwl6pwaFEEj8bYTSSNZLr+XHNv03CZ6NcD0XvcftRF9x+ZIFGekAjFmikBzRigUZ6QCMWaKQHNGJBST/iFQKjkR4uRiMOaKQHNGKBRnpAIxZopAc0YoFGekAjFmikBzRigUZ6QCOWbY3aJ+tv+PNdGMqiatSpbL7mz3G6Ukr6UYvNIGtk1wtyicj1aX7LRVImtfYJVd5k3b99Q9Io+m31rLu0D7AaOZdFOoBDHG6sbC2/w49C+miESU3F5Wux807aldqbU/wutoo0qeX6h7AVtmuxK9EIhNGIAR+xWZgrNfxEfwrKBX/s34bggj/zfvwp4PYjy/9LUwgrPNTtiQAAAABJRU5ErkJggg==" alt="" width="194" height="83" />        aaarticlea/png;base64,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" alt="" />

INSERT [dbo].[User] ([Id], [UserName], [GroupId]) VALUES (, N'张1', )
INSERT [dbo].[User] ([Id], [UserName], [GroupId]) VALUES (, N'张2', )
INSERT [dbo].[User] ([Id], [UserName], [GroupId]) VALUES (, N'张3', ) INSERT [dbo].[Group] ([Id], [GroupName]) VALUES (, N'A')
INSERT [dbo].[Group] ([Id], [GroupName]) VALUES (, N'B')
INSERT [dbo].[Group] ([Id], [GroupName]) VALUES (, N'C')

数据脚本


3>连接大全

Sql:
SELECT [t0].[GroupName], [t1].[UserName]
FROM [Group] AS [t0]
INNER JOIN [User] AS [t1] ON ([t0].[Id]) = [t1].[GroupId] Linq to Sql:
from g in Groups
join u in Users
on g.Id equals u.GroupId
select new { GroupName=g.GroupName, UserName=u.UserName} Lambda:
Groups.Join
(
Users,
g => (Int32?)(g.Id),
u => u.GroupId,
(g, u) =>
new
{
GroupName = g.GroupName,
UserName = u.UserName
}
)

内连接(Inner Join)

aaarticlea/png;base64,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" alt="" />


Sql:
-- Region Parameters
DECLARE @p0 NVarChar() = ''
-- EndRegion
SELECT [t0].[GroupName],
(CASE
WHEN [t2].[test] IS NULL THEN CONVERT(NVarChar(),@p0)
ELSE [t2].[UserName]
END) AS [UserName]
FROM [Group] AS [t0]
LEFT OUTER JOIN (
SELECT AS [test], [t1].[UserName], [t1].[GroupId]
FROM [User] AS [t1]
) AS [t2] ON ([t0].[Id]) = [t2].[GroupId] Linq to Sql:
from g in Groups
join u in Users
on g.Id equals u.GroupId
into Grp
from grp in Grp.DefaultIfEmpty()
select new { GroupName=g.GroupName, UserName=(grp==null)?"":grp.UserName} Lambda:
Groups.GroupJoin (
Users,
g => (Int32?)(g.Id),
u => u.GroupId,
(g, Grp) =>
new
{
g = g,
Grp = Grp
}
) .SelectMany (
temp0 => temp0.Grp.DefaultIfEmpty (),
(temp0, grp) =>
new
{
GroupName = temp0.g.GroupName,
UserName = (grp == null) ? "" : grp.UserName
}
)

左连接(Left Join)

aaarticlea/png;base64,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" alt="" />


Sql:
-- Region Parameters
DECLARE @p0 NVarChar() = ''
-- EndRegion
SELECT
(CASE
WHEN [t2].[test] IS NULL THEN CONVERT(NVarChar(),@p0)
ELSE [t2].[GroupName]
END) AS [GroupName], [t0].[UserName]
FROM [User] AS [t0]
LEFT OUTER JOIN (
SELECT AS [test], [t1].[Id], [t1].[GroupName]
FROM [Group] AS [t1]
) AS [t2] ON [t0].[GroupId] = ([t2].[Id]) Linq to Sql:
from u in Users
join g in Groups
on u.GroupId equals g.Id
into Grp
from grp in Grp.DefaultIfEmpty()
select new { GroupName=(grp==null)?"":grp.GroupName, UserName=u.UserName} Lambda:
Users.GroupJoin (
Groups,
u => u.GroupId,
g => (Int32?)(g.Id),
(u, Grp) =>
new
{
u = u,
Grp = Grp
}
).SelectMany (
temp0 => temp0.Grp.DefaultIfEmpty (),
(temp0, grp) =>
new
{
GroupName = (grp == null) ? "" : grp.GroupName,
UserName = temp0.u.UserName
}
)

右连接(Right Join)

aaarticlea/png;base64,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" alt="" />


Sql:
-- Region Parameters
DECLARE @p0 NVarChar() = ''
DECLARE @p1 NVarChar() = ''
-- EndRegion
SELECT DISTINCT [t7].[GroupName], [t7].[value] AS [UserName]
FROM (
SELECT [t6].[GroupName], [t6].[value]
FROM (
SELECT [t0].[GroupName],
(CASE
WHEN [t2].[test] IS NULL THEN CONVERT(NVarChar(),@p0)
ELSE [t2].[UserName]
END) AS [value]
FROM [Group] AS [t0]
LEFT OUTER JOIN (
SELECT AS [test], [t1].[UserName], [t1].[GroupId]
FROM [User] AS [t1]
) AS [t2] ON ([t0].[Id]) = [t2].[GroupId]
UNION ALL
SELECT
(CASE
WHEN [t5].[test] IS NULL THEN CONVERT(NVarChar(),@p1)
ELSE [t5].[GroupName]
END) AS [value], [t3].[UserName]
FROM [User] AS [t3]
LEFT OUTER JOIN (
SELECT AS [test], [t4].[Id], [t4].[GroupName]
FROM [Group] AS [t4]
) AS [t5] ON [t3].[GroupId] = ([t5].[Id])
) AS [t6]
) AS [t7] Linq to Sql:
var a=from g in Groups
join u in Users
on g.Id equals u.GroupId
into Grp
from grp in Grp.DefaultIfEmpty()
select new { GroupName=g.GroupName, UserName=(grp==null)?"":grp.UserName}; var b=from u in Users
join g in Groups
on u.GroupId equals g.Id
into Grp
from grp in Grp.DefaultIfEmpty()
select new { GroupName=(grp==null)?"":grp.GroupName, UserName=u.UserName}; var c=a.Concat(b).Distinct();
c.Dump(); Lambda:
Groups
.GroupJoin (
Users,
g => (Int32?)(g.Id),
u => u.GroupId,
(g, Grp) =>
new
{
g = g,
Grp = Grp
}
)
.SelectMany (
temp0 => temp0.Grp.DefaultIfEmpty (),
(temp0, grp) =>
new
{
GroupName = temp0.g.GroupName,
UserName = (grp == null) ? "" : grp.UserName
}
)
.Concat (
Users
.GroupJoin (
Groups,
u => u.GroupId,
g => (Int32?)(g.Id),
(u, Grp) =>
new
{
u = u,
Grp = Grp
}
)
.SelectMany (
temp2 => temp2.Grp.DefaultIfEmpty (),
(temp2, grp) =>
new
{
GroupName = (grp == null) ? "" : grp.GroupName,
UserName = temp2.u.UserName
}
)
)
.Distinct ()

全连接(FULL OUTER JOIN)

aaarticlea/png;base64,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" alt="" />


Sql:
SELECT [t0].[GroupName], [t1].[UserName]
FROM [Group] AS [t0], [User] AS [t1] Linq to Sql:
from g in Groups
from u in Users
select new { GroupName=g.GroupName, UserName=u.UserName} Lambda:
Groups.SelectMany
(
g => Users,
(g, u) =>
new
{
GroupName = g.GroupName,
UserName = u.UserName
}
)

笛卡儿积(cross join)

aaarticlea/png;base64,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*e+hLqnL0MiLdA7V9BZUJzHWpq+yo7RNAVjaBsINBbV+FUl+Z8FwV4QiGo7avTGMEw7eZEYx+nKcy+canOq4cVfgRtW7MGoyjti8LT/tMkKpMbd9cUNkETCfSg8omQGU9qGwCVNaDyiZAZT3U9sGdQFY2wY6srAaVTYDKelDZBKisB5VN0FSZRyRNUNkEO2r71DRUHmZhLPrR/lUoZWVq++S0y1Q3G368oTsSldN8vN9Q2zdRVXn8BRJKSroj72CUoFiipvLpt3RwuTepytHLVm0fWbmisn+Z8xuUnamr7GoFUccO87JTsquonP5G1OJj1RFhB6PSzaCFan8HgxqFqyEcwXAVmxffC6xUXIdx4arvyVkq7zf84K1HXuXsFb74y74jswbjTv8IivuW7bHjaZ8RUpWp7ZsLKpuA6UR6UNkEqKwHlU2AynpQ2QSorIfaPrgTyMom2JGV1aCyCVBZDyqbAJX1oLIJmirziKQJKptgR22fmsp0ogAmX3SllJWp7ZNTUTmcrYzMPZGoTG1fHZHKzPDsjbyDUYImEmflZV/xvUlVjl5S29eEvrIJ6io7avsEyDoYlCh0RtjBqHQz6GDIVJ7+jgB0QTiC4ajtK8MIhgnOUpnavgBhX3nZQerPrMG4FbV9OXjaZ4JU5Wikgod8TVDZBEwn0oPKJkBlPahsAlTWg8omQGU91PbBnUBWNsGOrKwGlU2AynpQ2QSorAeVTdBUmUckTVDZBDtq+9TUVQ4e8jOjqB+lrFyf5Eltn09Z5f0mkvdj+7D4cPVConKaj6nt8ympzEzuqyLvYJSgwYRT76EvqcrRy4hkB2TlksqLL0m4MnWVHbV9AsjKJhB2MKjtq1DqK1Nfc1WEIxiO2r4yjREM32ZGMPpxlsrU9gVUx5WjCr9lR6orswbjqO3LwtM+E6QqU9s3F1Q2AdOJ9KCyCVBZDyqbAJX1oLIJUFlPoDILy60vqMxyJ8v/AZ95MmvzEtTlAAAAAElFTkSuQmCC" alt="" />

Linq表连接大全(INNER JOIN、LEFT OUTER JOIN、RIGHT OUTER JOIN、FULL OUTER JOIN、CROSS JOIN)的更多相关文章

  1. 【2017-11-26】Linq表连接查询

    class Program { static void Main(string[] args) { //Linq创建的数据库上下文对象db DataClasses2DataContext db = n ...

  2. MS sql server 基础知识回顾(二)-表连接和子查询

    五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...

  3. 转!sqlServer2000 表连接查询

    在查询多个表时,我们经常会用“连接查询”.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 什么是连接查询呢? 概念:根据两个表或多个表的列之间的关系,从这些表中查询数据 ...

  4. Oracle表连接总结

    1 简述 1) 两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结 ...

  5. 【SqlServer系列】表连接

    1   概述 1.1  已发布[SqlServer系列]文章 [SqlServer系列]MYSQL安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 1.2  本篇 ...

  6. SQL的各种连接(cross join、inner join、full join)的用法理解

    SQL中的连接可以分为内连接,外连接,以及交叉连接 . 1. 交叉连接CROSS JOIN 如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积: 举例, ...

  7. mysql多表连接和子查询

    文章实例的数据表,来自上一篇博客<mysql简单查询>:http://blog.csdn.net/zuiwuyuan/article/details/39349611 MYSQL的多表连接 ...

  8. 【oracle】-表连接类型:内连接,外连接&period;&period;&period;

    一.数据准备 1.emp表 delete from emp; insert into emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) ...

  9. 表连接sql执行计划学习

    循环嵌套连接(Nested Loop Join) 合并连接(Merge Join) 哈西匹配(Hash Join) 文章:浅谈SQL Server中的三种物理连接操作 循环嵌套,如果内循环列上有索引, ...

随机推荐

  1. Samba文件服务器详细配置步骤

    准备安装 环境:CentOS 6.3_x64bit 安装:Minimal(最小) 1.配置IP地址 2.挂载:[root@localhost ~]# mount -t iso9660 /dev/cdr ...

  2. php基础24:数组range

    <?php $numbers = range(1, 10); echo "<pre>"; var_dump($numbers); echo "</ ...

  3. UVa 11988 破损的键盘(链表)

    原题链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  4. Java——IO&lpar;输入输出流&rpar;

     *  * 想要知道开发时用到哪些数据对象,只要通过四个明确即可:  * 1.明确源,和目的:  * 源: InputStream reader  * 目的: OutPutStream Write ...

  5. 一分钟明确 VS manifest 原理

    什么是vs 程序的manifest文件 manifest 是VS程序用来标明所依赖的side-by-side组建,如ATL, CRT等的清单. 为什么要有manifest文件 一台pc上,用一组建往往 ...

  6. 201521123069 《Java程序设计》 第3周学习总结

    1. 本章学习总结 如果看不清楚可点击类与对象 2. 书面作业 Q1. 代码阅读 public class Test1 { private int i = 1;//这行不能修改 private sta ...

  7. maven入门(1-1)maven是什么?

    Maven是一个项目管理工具,它包含了 一个项目对象模型 (Project Object Model), 一组标准集合, 一个项目生命周期(Project Lifecycle), 一个依赖管理系统(D ...

  8. python使用cx&lowbar;Oracle在Linux和Windows下的一点差异

    1. 主要是线程方面的差异. Windows下,把cx_Oracle.connect(connectedId)得到的handle传给定时器线程,主线程和和定时器可以用同一个handle. 但Linux ...

  9. Cocos Creator学习目录

    目录 安装和启动 文件结构 编辑器基础 基本概念 (场景树 节点 坐标 组件 ) Cocos Creator 脚本简介 Cocos Creator调试 节点 cc.Node 组件开发cc.Compon ...

  10. About the Cron Expression

    About the Cron Expression Cron is use in Linux for the time schedule Format Seconds Minutes Hours Da ...