zoukankan      html  css  js  c++  java
  • 图解 交集(join)和 合并(union)

    假设我们有两张表。

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

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

    id name       id  name

    Pirate        1   Rutabaga

    2  Monkey     2   Pirate

    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会列出所有记录,包括重复的

  • 相关阅读:
    Kafka 设计思路
    DBeaver——超好用可视化数据库!(墙裂推荐(づ ̄3 ̄)づ╭❤~)
    蓝图BluePrint——基于Flask框架
    SkyWalking全链路监控java项目
    win10创建ssh公钥
    mysql通过列名搜索出表名
    使用nodejs判断前端性能
    golang 栈、堆分配分析及CPU、内存性能情况
    UML图-(用例图、类图、状态图、活动图、时序图)
    linux参数调优
  • 原文地址:https://www.cnblogs.com/tiandi/p/5372982.html
Copyright © 2011-2022 走看看