假设我们有两张表。

  • Table A 是左边的表。
  • Table B 是右边的表。

其各有四条记录,其中有两条记录是相同的,如下所示:

id name       id  name

1  Pirate        1   Rutabaga

2  Monkey     2   Pirate

3  Ninja         3   Darth Vader

4  Spaghetti   4   Ninja

下面让我们来看看不同的Join会产生什么样的结果。

1、Inner join

SELECT * FROM TableA  INNER JOIN TableB   ON TableA.name = TableB.name

结果集

(TableA.)       (TableB.)

id  name       id   name

1   Pirate     2    Pirate

3   Ninja      4    Ninja

Inner join 产生的结果集中,是A和B的交集

2.FULL [OUTER] JOIN

SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name

结果集
(TableA.)           (TableB.)

id    name         id       name

1     Pirate        2     Pirate

2     Monkey     null   null

3     Ninja         4      Ninja

4     Spaghetti  null   null

null  null           1     Rutabaga

null  null           3     Darth Vader

Full outer join 产生A和B的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。可以使用IFNULL判断。
注意:产生A表和B表都没有出现的数据集
SELECT * FROM TableA FULL OUTER JOIN TableB ON TableA.name = TableB.name
WHERE TableA.id IS null OR TableB.id IS null
 
3、LEFT [OUTER] JOIN
SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name
结果集
(TableA.)           (TableB.)

id  name         id    name

1   Pirate        2     Pirate

2   Monkey     null  null

3   Ninja         4     Ninja

4   Spaghetti  null  null

注意:产生在A表中有而在B表中没有的集合

SELECT * FROM TableA LEFT OUTER JOIN TableB ON TableA.name = TableB.name

WHERE TableB.id IS null

(TableA.)           (TableB.)

id  name       id     name

2   Monkey     null   null

4   Spaghetti  null   null

4、UNION 与 UNION ALL

UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型

UNION 只选取记录,会选取不同的值;而UNION ALL会列出所有记录,包括重复的

图解 交集(join)和 合并(union)的更多相关文章

  1. 数据库基础(子查询练习、链接查询(join on 、union)及其练习)

    子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...

  2. 题解 合并 union

    合并 union Description 给出一个 1 ∼ N 的序列 A ( A 1 , A 2 , ..., A N ) .你每次可以将两个相邻的元素合并,合并后的元素权值即为 这两个元素的权值之 ...

  3. Mysql: 图解 inner join、left join、right join、full outer join、union、union all的区别

    转载来源 对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚. ...

  4. linq 多个left join 和 sql union all -> linq union 方法

     (   from s in Base_SysMenus   join r in Base_RoleRights on s.Menu_Id equals r.Menu_Id into temp   f ...

  5. MySQL全连接(Full Join)实现,union和union all用法

    MySQL本身不支持你所说的full join(全连接),但可以通过union来实现 ,下面是一个简单测试,可以看看: mysql> CREATE TABLE a(id int,name cha ...

  6. 图解MYSQL JOIN ON,SQL JOIN 详解,数据库sql join语句

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  7. R语言常用函数:交集intersect、并集union、找不同setdiff、判断相同setequal

    在R语言进行数据分析时,经常需要找不同组间的相同和不同,那你应该掌握如下几个函数,让你事半功倍. 交集intersect两个向量的交集,集合可以是数字.字符串等 # 两个数值向量取交集intersec ...

  8. sql语句查询结果合并union all用法

    整理别人的sql 大概的思想是用union 和union all --合并重复行select * from Aunion select * from B --不合并重复行select * from A ...

  9. sql语句查询结果合并union all用法_数据库技巧

    --合并重复行 select * from A union select * from B --不合并重复行 select * from A union all select * from B 按某个 ...

随机推荐

  1. C# --通过枚举获取系统颜色

    public static System.Drawing.Color GetSystemColor(int i) { Array Colors = System.Enum.GetValues(type ...

  2. box2dweb基础

    简介 大名鼎鼎的物理引擎box2d基本上大家都听说过,网上有两个javascript版本的box2d库,一个时box2djs,已经停止维护,一个是box2dweb.下面就来介绍一下box2dweb的基 ...

  3. javascript 正则表达式基础知识汇总

    正则表达式:对字符串中的信息实现查找.替换和提取操作.(不支持注释和空白,必须写在一行内)正则表达式的创建:包含在一对斜杠之间的字符(直接量语法)例如:var pattern = /s$/;     ...

  4. nginx:403 forbidden 二种原因

    出现403 forbidden的两种原因:1.是缺少索引文件(index.html/inde.php):2.是权限问题 一.缺少索引文件index.html/inde.php 比如下面的配置: ser ...

  5. G面经prepare: Android Phone Unlock Pattern

    1 2 3 4 5 6 7 8 9 只有中间没有其他键的两个键才能相连,比如1可以连 2 4 5 6 8 但不能连 3 7 9 但是如果中间键被使用了,那就可以连,比如5已经被使用了,那1就可以连9 ...

  6. Lintcode: Product of Array Exclude Itself

    Given an integers array A. Define B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], calculate B wi ...

  7. [转]mongodb 查询条件:关系运算符"$lt", "$lte", "$gt", "$gte", "$ne" 逻辑运算符"$and“, "$or“, "$nor“

    mongodb 查询条件   这节来说说mongodb条件操作符,"$lt", "$lte", "$gt", "$gte" ...

  8. BeanFactory

            Spring容器,最基本的接口就是BeanFactory 负责创建,配置,管理bean 它有一个子接口ApplicationContext并将功能扩展.         理论上bean ...

  9. 生成apache证书(https应用)

    # cd /usr/local/apache2/conf# tar zxvf ssl.ca-0.1.tar.gz# cd ssl.ca-0.1生成根证书:# ./new-root-ca.sh      ...

  10. MDX Order排序

    Order基础用法: Numeric expression syntaxOrder(Set_Expression, Numeric_Expression [ , { ASC | DESC | BASC ...