精华内容
下载资源
问答
  • Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表;实际应用大部分情况下,查询...这篇针对这三个点通过实例来讲述,目的是穷尽所有的场

    Mysql 多表查询详解

    一.前言 

    二.示例

    三.注意事项

    一.前言 

    上篇讲到Mysql中关键字执行的顺序,只涉及了一张表;实际应用大部分情况下,查询语句都会涉及到多张表格 :

    1.1 多表连接有哪些分类?

    1.2 针对这些分类有哪些连接方法?

    1.3 这些连接方法分别作用于哪些应用场景?

    这篇针对这三个点通过实例来讲述,目的是穷尽所有的场景和所有的方法,并且对每个方法的使用做实例。

    首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下):

    A)内连接join,inner join

    B)外连接left join,left outer join,right join,right outer join,union

    C)交叉连接cross join


    二.下面以实例进行分析

    两张假设有两张表格A和B,把表格当作一个集合,那么表格中的记录就是集合中的一个元素。

    两张表格如下:

    TableA:TableB:

    2.1 内连接(只有一种场景)

    inner join 或者join(等同于inner join)

    [java] view plain copy
    1. select a.*, b.* from tablea a  
    2. inner join tableb b  
    3. on a.id = b.id  

    [java] view plain copy
    1. select a.*, b.* from tablea a  
    2. join tableb b  
    3. on a.id = b.id  

    结果如下:

    应用场景:

    这种场景下得到的是满足某一条件的A,B内部的数据;正因为得到的是内部共有数据,所以连接方式称为内连接。

    2.2 外连接(六种场景)

    2.2.1 left join 或者left outer join(等同于left join)

    [java] view plain copy
    1. select a.*, b.* from tablea a  
    2. left join tableb b  
    3. on a.id = b.id  

    或者

    [java] view plain copy
    1. select a.*, b.* from tablea a  
    2. left outer join tableb b  
    3. on a.id = b.id  

    结果如下,TableB中更不存在的记录填充Null:


    应用场景:


    这种场景下得到的是A的所有数据,和满足某一条件的B的数据;

    2.2.2  [left   join 或者left outer join(等同于left join)]  +  [where B.column is null]

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. left join tableb b  
    3. on a.id = b.id  
    4. Where b.id is null  

    结果如下:


    应用场景:

    这种场景下得到的是A中的所有数据减去"与B满足同一条件 的数据",然后得到的A剩余数据;

    2.2.3  right join 或者fight outer join(等同于right join)

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. right join tableb b  
    3. on a.id = b.id  
    结果如下,TableB中更不存在的记录填充Null:

    应用场景:


    这种场景下得到的是B的所有数据,和满足某一条件的A的数据;

    2.2.4 [left   join 或者left outer join(等同于left join)]  +  [where A.column is null]

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. right join tableb b  
    3. on a.id = b.id  
    4. where a.id is null  
    结果如下:


    应用场景:


    这种场景下得到的是B中的所有数据减去 "与A满足同一条件 的数据“,然后得到的B剩余数据;

    2.2.5 full join (mysql不支持,但是可以用 left join  union right join代替)

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. left join tableb b  
    3. on a.id = b.id  
    4. union  
    5. select a.id aid,a.age,b.id bid,b.name from tablea a  
    6. right join tableb b  
    7. on a.id = b.id  
    union过后,重复的记录会合并(id为2,3,4的三条记录),所以结果如下:

    应用场景:



    这种场景下得到的是满足某一条件的公共记录,和独有的记录

    2.2.6 full join + is null(mysql不支持,但是可以用 (left join + is null) union (right join+isnull代替)

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. left join tableb b  
    3. on a.id = b.id  
    4. where b.id is null  
    5. union  
    6. select a.id aid,a.age,b.id bid,b.name from tablea a  
    7. right join tableb b  
    8. on a.id = b.id  
    9. where a.id is null  
    结果如下:


    应用场景:


    这种场景下得到的是A,B中不满足某一条件的记录之和

    注:上面共有其中七(2^3-1)种应用场景,还有一种是全空白,那就是什么都不查,七种情形包含了实际应用所有可能的场景

    2.3 交叉连接 (cross join)

    2.3.1 实际应用中还有这样一种情形,想得到A,B记录的排列组合,即笛卡儿积,这个就不好用集合和元素来表示了。需要用到cross join:

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. cross join tableb b  


    2.3.2 还可以为cross  join指定条件 (where):

    [java] view plain copy
    1. select a.id aid,a.age,b.id bid,b.name from tablea a  
    2. cross join tableb b  
    3. where a.id = b.id  
    结果如下;

    注:这种情况下实际上实现了内连接的效果

    三 注意事项

    上面仍然存在遗漏,那就是mysql对sql语句的容错问题,即在sql语句不完全符合书写建议的情况,mysql会允许这种情况,尽可能地解释它:

    3.1 一般cross join后面加上where条件,但是用cross join+on也是被解释为cross join+where;

    3.2 一般内连接都需要加上on限定条件,如上面场景2.1;如果不加会被解释为交叉连接;

    3.3 如果连接表格使用的是逗号,会被解释为交叉连接;

    注:sql标准中还有union join和natural  inner join,mysql不支持,而且本身也没有多大意义,其结果可以用上面的几种连接方式得到

    总结:总结了mysql所有连接方法,其中有一些是之前没有注意到的问题,平时开发也都不外乎这些。

    展开全文
  • 用list实现集合的操作,交集,并集

    千次阅读 2018-05-14 23:15:05
    用list实现集合的操作,交集,并集等。 图示从网上下载的 通过arraylist分别实现A,B,A+C这个集合。 /** * Removes from this list all of its elements that are contained in the * specified collection. ...

    用list实现集合的操作,交集,并集等。

    这里写图片描述

    图示从网上下载的
    通过arraylist分别实现A,B,A+C这个集合。
    /**
        * Removes from this list all of its elements that are contained in the
        * specified collection.
        *
        * @param c collection containing elements to be removed from this list
        * @return {@code true} if this list changed as a result of the call
        * @throws ClassCastException if the class of an element of this list
        *         is incompatible with the specified collection
        * (<a href="Collection.html#optional-restrictions">optional</a>)
        * @throws NullPointerException if this list contains a null element and the
        *         specified collection does not permit null elements
        * (<a href="Collection.html#optional-restrictions">optional</a>),
        *         or if the specified collection is null
        * @see Collection#contains(Object)
        */
       public boolean removeAll(Collection<?> c) {
           Objects.requireNonNull(c);
           return batchRemove(c, false);
       }
    
    /**
         * Retains only the elements in this list that are contained in the
         * specified collection.  In other words, removes from this list all
         * of its elements that are not contained in the specified collection.
         *
         * @param c collection containing elements to be retained in this list
         * @return {@code true} if this list changed as a result of the call
         * @throws ClassCastException if the class of an element of this list
         *         is incompatible with the specified collection
         * (<a href="Collection.html#optional-restrictions">optional</a>)
         * @throws NullPointerException if this list contains a null element and the
         *         specified collection does not permit null elements
         * (<a href="Collection.html#optional-restrictions">optional</a>),
         *         or if the specified collection is null
         * @see Collection#contains(Object)
         */
        public boolean retainAll(Collection<?> c) {
            Objects.requireNonNull(c);
            return batchRemove(c, true);
        }
    

    其他的方法经常用到,这个两个反而用的很少,所以只把这个两个的源码拿出来,并实现简单集合操作。
    public boolean removeAll(Collection<?> c) 主要实现从test列表中删除在test1列表的数据。有兴趣的可以看看源码。
    public boolean retainAll(Collection<?> c)说白了就是实现B操作。具体代码如下:

    public class TestList {
        public static void main(String args[]) {
            ArrayList<String> test = new ArrayList<>();
            test.add("1");
            test.add("2");
            test.add("3");
            test.add("4");
    
    
            ArrayList<String> test1 = new ArrayList<>();
            test1.add("3");
            test1.add("4");
            test1.add("5");
            test1.add("6");
            test1.add("7");
            test1.add("8");
    
            test.retainAll(test1); //实现集合A
    
            test.removeAll(test1); //实现集合B
    
            test1.removeAll(test);
            test.addAll(test1);//实现A+B+C
    
            //实现A+C
            ArrayList<String> newTest = new ArrayList<>();
            newTest.addAll(test);
            newTest.addAll(test1);
            test.retainAll(test1);
            newTest.removeAll(test);
        }
    }
    

    邀请你加入,我们一起免费成长,改变只需一秒钟
    在这里插入图片描述

    展开全文
  • 能使用Venn图表达集合的关系及运算,体会直观图示对理解抽象概念的作用.1.并集(1)定义:一般地,________________________的元素组成的集合,称为集合A与B的并集,记作________.(2)并集的符号语言表示为A∪B=...

    点赞和转发才是好习惯

    1.1.3 集合的基本运算

    第1课时 并集与交集

    72cf14f44c4691b0324ff035616697e5.png课时目标b975a0c5808d7da037e11018c0e4c04a.png 1.理解两个集合的并集与交集的含义,会求两个简单集合的并集与交集.

    2.能使用Venn图表达集合的关系及运算,体会直观图示对理解抽象概念的作用.

    e284fa4d70321cb589f969415557441a.png

    1.并集

    (1)定义:一般地,________________________的元素组成的集合,称为集合AB的并集,记作________.

    (2)并集的符号语言表示为AB_____________________________________________ ___________________________.

    (3)并集的图形语言(即Venn图)表示为下图中的阴影部分:

    6df45a3a0b25ba29fb48064d9324a0b4.png

    (4)性质:AB________AA____A____ABA________A____AB.

    2.交集

    (1)定义:一般地,由________________________元素组成的集合,称为集合AB的交集,记作________.

    (2)交集的符号语言表示为AB___________________________________________ _____________________________.

    (3)交集的图形语言表示为下图中的阴影部分:

    c9c69d45766ba33fc1523397245c37f0.png

    (4)性质:AB______AA____A____ABA________AB____ABABAABB.

    86b54eb3665074ea31b676bb58224bb8.png

    一、选择题

    1.若集合A{0,1,2,3}B{1,2,4},则集合AB等于(  )

    A{0,1,2,3,4}                       B{1,2,3,4}

    C{1,2}                           D{0}

    2.集合A{x|1x2}B{x|x<1}<,则AB等于(  )

    A{x|x<1}                               B{x|1x2}

    C{x|1x1}                    D{x|1x<1}

    3.若集合A{参加北京奥运会比赛的运动员},集合B{参加北京奥运会比赛的男运动员},集合C{参加北京奥运会比赛的女运动员},则下列关系正确的是(  )

    AAB                            BBC

    CABC                        DBCA

    4.已知集合M{(xy)|xy2}N{(xy)|xy4},那么集合MN(  )

    Ax3y=-1                     B.(3,-1)

    C{3,-1}                         D{(3,-1)}

    5.设集合A{5,2a},集合B{ab},若AB{2},则ab等于(  )

    A1                                B2

    C3                                D4

    6.集合M{1,2,3,4,5},集合N{1,3,5},则(  )

    ANM                            BMNM

    C.MNM                         D.M>N

    题 号

    1

    2

    3

    4

    5

    6

    答 案

    二、填空题

    7.设集合A{3,0,1}B{t2t1}.若ABA,则t________.

    8.设集合A{1,1,3}B{a2a24}AB{3},则实数a________.

    9.设集合A{x|1x2}B{x|1<x4}C{x|3<x<2}且集合A(BC)={x|axb},则a______b______.

    三、解答题

    10.已知方程x2pxq0的两个不相等实根分别为αβ,集合A{αβ}B{2,4,5,6}C{1,2,3,4}ACAAB.求pq的值.

    11.设集合A{2}B{x|ax10aR},若ABB,求a的值.

    72cf14f44c4691b0324ff035616697e5.png能力提升b975a0c5808d7da037e11018c0e4c04a.png

    12.定义集合运算:A*B{z|zxyxAyB}.设A{1,2}B{0,2},则集合A*B的所有元素之和为(  )

    A0                            B2

    C3                            D6

    13.设U{1,2,3}MNU的子集,若MN{1,3},则称(MN)为一个“理想配集”,求符合此条件的“理想配集”的个数(规定(MN)(NM)不同).

    fff80f4454ad542c405c2154c999bd32.png

    1对并集、交集概念全方面的感悟

    (1)对于并集,要注意其中的意义,与通常所说的非此即彼有原则性的区别,它们是相容的.

    xA,或xB这一条件,包括下列三种情况:xAxBxBxAxAxB.因此,AB是由所有至少属于AB两者之一的元素组成的集合.

    (2)AB中的元素是所有属于集合A且属于集合B的元素,而不是部分.特别地,当集合A和集合B没有公共元素时,不能说AB没有交集,而是AB.

    2.集合的交、并运算中的注意事项

    (1)对于元素个数有限的集合,可直接根据集合的定义求解,但要注意集合元素的互异性.

    (2)对于元素个数无限的集合,进行交、并运算时,可借助数轴,利用数轴分析法求解,但要注意端点值取到与否.

    拓展 交集与并集的运算性质,除了教材中介绍的以外,还有ABABBABABA.这种转化在做题时体现了化归与转化的思想方法,十分有效

    寄语:也许你暂时看不清楚未来,也要提醒自己别辜负了现在。我们以后的每一步是否顺利,都是基于当下的这一步是否能走好。整日的迷茫不会换来一个清晰的未来,如今的努力正是在为改变积累力量。

    展开全文
  • 文章目录1 概述2 示例 1 概述 1. Oracle 中有三种集合操作 (1) 并集 union all -- 不去重,不排序,效率高 union -- 去重,默认...查询结果集图示:(红色区域) 集合类型 关键字 描述 并集 union allunion

    文章目录

    1 概述

    1. Oracle 中有三种集合操作
       (1) 并集	union all -- 不去重,不排序,效率高
          	    union     -- 去重,默认排序,效率低
       
       (2) 交集 intersect
       
       (3) 差集 minus
    
    2. 注意事项
       (1) 各个列的 '数据类型' 必须对应,保持一致 -- 否则会报错提示
    

    查询结果集图示:(红色区域)

    集合类型 关键字 描述
    并集 union all
    union
    在这里插入图片描述
    交集 intersect 在这里插入图片描述
    差集 minus 在这里插入图片描述

    2 示例

    with a as (
      select 1 sno, 'a' sname from dual union all
      select 2 sno, 'b' sname from dual
    ), b as (
      select 1 sno, 'a' sname from dual union all
      select 3 sno, 'c' sname from dual
    )
    
    select a.sno, a.sname, 'a' source from a
    union all
    -- union     并集(去重、排序)
    -- intersect 交集
    -- minus     差集
    select b.sno, b.sname, 'b' source from b
    

    查询结果:(其它集合操作同理)

    sno		sname	source
    1		a		a
    2		b		a
    1		a		b
    3		c		b
    
    展开全文
  • 先看一下我画的简陋的图示图示.png交、并、差的详细概念请自行百度举个例子现在有 A、B 两个集合分别如下:A = {'1', '2', '3'}B = {'2', '3', '4'}交集:{'2', '3'}并集:{'1', '2', '3'}差集:{'1', '4'}Java...
  • 求两个集合的交集与并集常用方法-——数轴法和图示法. 观察集合A,B,C元素间的关系: A={4,5,6,8} ,B={3,5,7,8} ,C={3,4,5,6,7,8} A={x|x是有理数},B={x|x是无理数}, C={x|x是实数} 由这两个例子...
  • 上图给出了七段码数码管的一个图示,数码管中一共有 7 段可以发光的二 极管,分别标记为 a, b, c, d, e, f, g。 小蓝要选择一部分二极管(至少要有一个)发光来表达字符。在设计字符 的表达时,要求所有发光的二极管...
  • 航空航天大类C语言程设第三次练习赛 第四期更新,鸽子博主终于更新第三次练习赛了 ...样例图示: 思路很简单,最开始的区间作为初始交并区间,每读入一个区间:求并集,左端点的最小值和右端点的最大...
  • 他们的对应关系可以参考下面图示新建两个表进行测试:test_aIDname1曹操2郭嘉3孙权4周瑜test_bIDname1刘备2关羽3张飞4孙权5周瑜1.UNION形成并集UNION可以对两个或多个结果集进行连接,形成“并集”。子结果集所有的...
  • SQLServe 通过intersect,union,except和三个关键字...他们的对应关系可以参考下面图示 select * from t1 union all select * from t2 go /*求表并集不过滤重复 1 2 3 3 4 5*/ select * from t1 except sele
  • IOU理解

    2018-12-28 16:21:37
    IOU(Intersection-over-Union)是目标检测中使用的一个概念,是产生的候选框(candidate bounding box)与真实标记的框(ground truth bounding box)的重叠程度,候选框与真实框之间交集与并集的比值叫IOU ...
  • 由上述图示可知,IoU 的计算综合考虑了交集和并集,如何使得 IoU 最大,需要满足,更大的重叠区域,更小的不重叠的区域。 两个矩形窗格分别表示: 左上点、右下点的坐标联合标识了一块矩形区域...
  • 在目标检测的评价体系中,有一个参数叫做 IoU,简单而...即检测结果区域(Detection Result)与真值区域(Ground Truth)的交集比上它们的并集,其计算表达式为: 图示: DR = Detection Result;GT = Ground Trut...
  • MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分...UNION ALL是两个查询的并集; Minus、intersect、union all三个图示如下:   示例表tab_emp和test create table tab_emp (EMPNO NUMBER(4) not
  • 具体我们可以简单的理解为: 即检测结果(DetectionResult)与 Ground Truth 的交集比上它们的并集,即为检测的准确率 IoU : 图示 如下图所示:GT = GroundTruth; DR = DetectionResult; 黄色边框框起来的是:GT⋂DR ...
  • 计算算法:并集(权重最低),交集(权重中),互拆(权重最高,且是独占式) 规则要点: 按序号顺序执行计算结果 参与者处理人不为空才参与成员间计算 权重 示例讲解 以上图图示为例,总共有三个参与者...
  • Direct2D教程(六)图形也能做运算

    千次阅读 2013-06-06 17:15:14
    概述大家都学过集合运算,给定两个集合,可以求他们的并集,交集,差集等。其实图形之间也能做运算,今天就带大家开始图形运算之旅,讲讲如何合并图形。在D2D中有四种方法合并图形,分别是并(UNION),交...
  • 高中数学·集合

    2020-11-22 01:11:10
    图示法F、集合与集合间的基本关系F1. 相等(集合A与集合B中的所有元素相同)F2. 子集(A中任一元素均为B中的元素)F3. 真子集(A中任一元素均为B中的元素,且B中至少有一个不是A中的元素)F4. 空集(是任何集合的子集;是...
  • C 标准I/O库粗略实现

    2020-12-08 19:40:13
    flag字段可以是以下几种的并集: <pre><code>c enum _flags { _READ = 1, _WRITE = 2, _UNBUF = 4, //不进行缓冲 _EOF = 8, _ERR = 16 }; </code></pre> 我们注意到其中有一个...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

并集图示