此外,如何适应左外加入,右外加入和全外加入?
当前回答
“外部”和“内部”只是可选的元素,你只是处理两个(三个)类型的加入。内部加入(或什么是默认使用只有“加入”)是一个加入,只有符合标准的元素在两个表上存在。
“外部”插件是相同的内部插件加上不匹配的左或右表的元素,并在其他表的所有列上添加零。
全合是内合,右合和左合。
总之,如果我们有这样的表A
idA | ColumnTableA | idB |
---|---|---|
1 | Jonh | 1 |
2 | Sarah | 1 |
3 | Clark | 2 |
4 | Barbie | NULL |
图B如下:
idB | ColumnTableB |
---|---|
1 | Connor |
2 | Kent |
3 | Spock |
内部加入:
from tableA join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
左边加入:
from tableA left join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
4 | Barbie | NULL | NULL |
向外加入:
from tableA right join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
NULL | NULL | 3 | Spock |
全外加入:
from tableA full join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
4 | Barbie | NULL | NULL |
NULL | NULL | 3 | Spock |
其他回答
“外部”和“内部”只是可选的元素,你只是处理两个(三个)类型的加入。内部加入(或什么是默认使用只有“加入”)是一个加入,只有符合标准的元素在两个表上存在。
“外部”插件是相同的内部插件加上不匹配的左或右表的元素,并在其他表的所有列上添加零。
全合是内合,右合和左合。
总之,如果我们有这样的表A
idA | ColumnTableA | idB |
---|---|---|
1 | Jonh | 1 |
2 | Sarah | 1 |
3 | Clark | 2 |
4 | Barbie | NULL |
图B如下:
idB | ColumnTableB |
---|---|
1 | Connor |
2 | Kent |
3 | Spock |
内部加入:
from tableA join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
左边加入:
from tableA left join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
4 | Barbie | NULL | NULL |
向外加入:
from tableA right join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
NULL | NULL | 3 | Spock |
全外加入:
from tableA full join tableB on tableA.idB = tableB.idB
idA | ColumnTableA | idB | ColumnTableB |
---|---|---|---|
1 | Jonh | 1 | Connor |
2 | Sarah | 1 | Connor |
3 | Clark | 2 | Kent |
4 | Barbie | NULL | NULL |
NULL | NULL | 3 | Spock |
他们不显示一个十字路口和一个内部联盟之间的区别,例如,或者更一般地显示不同类型的联盟预言之间的区别,或者提供一个框架,以便思考他们将如何运作。
此分類上一篇
選擇 A.Colour, B.Colour 從 A CROSS JOIN B
一些例子
上面是经典的equi加入。
内部合并条件不一定是平等条件,也不需要从两个(甚至任何)表中提到列。 评估 A.Colour NOT IN(“绿色”,“蓝色”)在交叉合并返回的每个行。
选择 A.Colour, B.Colour FROM A INNER JOIN B ON 1 = 1
此分類上一篇
此分類上一篇
此分類上一篇
选择 A.Colour, B.Colour FROM A FULL OUTER JOIN B ON 1 = 0
此分類上一篇
此分類上一篇
此分類上一篇
饰 SQL Fiddle
最简单的定义
内部加入:从两个表中返回相匹配的记录。
Full Outer 加入:从两个表中返回相匹配和未相匹配的记录,从两个表中返回未相匹配的记录为零。
左外加入:只从左侧的桌子上返回匹配和不匹配的记录。
右外加入:只从右侧的桌子上返回相匹配和不相匹配的记录。
短短
相匹配 + 左不相匹配 + 右不相匹配 = 全外加入
相匹配 + 左不相匹配 = 左外加入
相匹配 + 相匹配不相匹配 = 相匹配不相匹配
相匹配 = 内部加入
内部加入与外部加入之间的区别如下:
内部合并是基于匹配图表的合并,而外部合并是基于匹配图表和未匹配图表的合并。内部合并是从两个图表中匹配序列的合并,而外部合并是从两个图表中匹配序列的合并,而外部合并是从两个图表中匹配序列的合并,而未匹配序列是以零值填写的合并。
在简单的条件下,
1.INNER JOIN OR EQUI JOIN : 返回结果组,仅符合两张表中的状态。
2.OUTER JOIN : 从两个表中返回所有值的结果,即使有条件相匹配或不相匹配。
3.LEFT JOIN : 从左表中返回所有值的结果组合,并仅与右表中的条件相匹配的行。
4.RIGHT JOIN : 从右表返回所有值的结果组合,并且仅符合左表的条件的行列。
5、全加入:全加入和全外加入是相同的。
推荐文章
- 在SQL server查询中将NULL替换为0
- 在SQL中修改表的模式名
- 如何在SQL Server 2005的一条语句中更新两个表?
- 如何创建临时表与SELECT * INTO tempTable从CTE查询
- 用于查找计数为>的记录的SQL查询
- 完全外部连接
- “从Table1左连接Table2”和“从Table2右连接Table1”可以互换吗?
- 在SQL Server的选择语句中使用带TOP的变量,而不是动态的
- 自然连接和内部连接的区别
- MySQL现在()+1天
- 在SQL中转换月号到月名函数
- 改变一个varchar列的最大长度?
- 外键约束:何时使用ON UPDATE和ON DELETE
- 连接查询vs多个查询
- 暂时关闭约束(MS SQL)