• 图解 交集(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会列出所有记录,包括重复的

  • 相关阅读:
    Vsftpd 3.0.2 正式版发布
    Putdb WebBuilder 6.5 正式版本发布
    SoaBox 1.1.6 GA 发布,SOA 模拟环境
    pynag 0.4.6 发布,Nagios配置和插件管理
    Percona Playback 0.4,MySQL 负荷回放工具
    xombrero 1.3.1 发布,微型 Web 浏览器
    Hypertable 0.9.6.4 发布,分布式数据库
    libmemcached 1.0.11 发布
    CryptoHeaven 3.7 发布,安全邮件解决方案
    Android Activity生命周期
  • 原文地址:https://www.cnblogs.com/tiandi/p/5372982.html
Copyright © 2020-2023  润新知