精华内容
下载资源
问答
  • setxor--求两个集合交集的非(异或)

    千次阅读 2015-12-23 17:18:12
    【功能简介】返回两个集合异或。 【语法格式】 1.c=setxor(A,B) c返回A与B异或,即属于A且不属于B元素和属于B且不属于A元素。 格式变体: [c,ia,ib] = setdiff(A, B):ia返回c中元素在A中...

    【功能简介】返回两个集合的异或。

    【语法格式】

    1.c=setxor(A,B)

    c返回A与B的异或,即属于A且不属于B的元素和属于B且不属于A的元素。

    格式变体:

    [c,ia,ib] = setdiff(A, B):ia返回c中元素在A中的位置索引,ib返回c中元素在B中的位置索引。

    2.c=setxor(A, B, 'rows')

    A与B是列数相同的矩阵,返回A、B的非公共行。

    【实例3.38】求向量A=[1,2,3,4]与向量B=[2,4,5,8]的交集的非。

    1. >> A=[1,2,3,4];  
    2. >> B=[2,4,5,8];  
    3. >> [c,ai,bi]=setxor(A,B)  
    4. c =  
    5.      1     3     5     8  
    6. ai =           % c(1)与c(2)在A中的索引  
    7.      1     3  
    8. bi =           % c(3)与c(4)在B中的索引  
    9.      3     4  

    【实例分析】两个集合的异或即两集合交集的非。
    展开全文
  • 查询A\B两表中所有非交集的记录 ( SELECT * from A EXCEPT select * from B) union ( SELECT * from B EXCEPT select * from A)   转载于:...
    create table A(
     id int IDENTITY(1,1) Not null primary key,
     name varchar(20) not null default(''),
    )
    INSERT INTO [A]([name]) VALUES('a')
    INSERT INTO [A]([name]) VALUES('b')
    INSERT INTO [A]([name]) VALUES('c')
    INSERT INTO [A]([name]) VALUES('d')
    INSERT INTO [A]([name]) VALUES('e')
    INSERT INTO [A]([name]) VALUES('f')
    INSERT INTO [A]([name]) VALUES('g')
    
    create table B(
     id int IDENTITY(1,1) Not null primary key,
     name varchar(20) not null default(''),
    )
    
    INSERT INTO [B]([name]) VALUES('a')
    INSERT INTO [B]([name]) VALUES('b')
    INSERT INTO [B]([name]) VALUES('c')
    INSERT INTO [B]([name]) VALUES('d')
    INSERT INTO [B]([name]) VALUES('h')
    INSERT INTO [B]([name]) VALUES('i')
    INSERT INTO [B]([name]) VALUES('j')
    SELECT * from A union select * from B  --查询A\B表的并集重复的项只显示一个
    SELECT * from A union all select * from B ----查询A\B表的并集重复的也显示
    SELECT * from A union all select * from B  order by id asc ---查询A\B表的并集重复的也显示,并按照id升序
    SELECT * from A INTERSECT select * from B ----查询两表的交集
    SELECT * from A EXCEPT select * from B ----查询A表中不与B表重复的记录
    --查询A\B两表中所有非交集的记录
    (SELECT * from A EXCEPT select * from B) union (SELECT * from B EXCEPT select * from A) 

     

    转载于:https://www.cnblogs.com/25miao/p/10611518.html

    展开全文
  • 如何通过标签进行并集,交集查询,本来想找一些开源框架来完成,后来发现可以用sql搞定话,就懒得优化了。配置如下: ComplexQuery包含三个属性,List andTagIds; List orTagIds; List notTagIds; ...

            系统有三张表,文章,标签及关系表。如何通过标签进行并集,交集与非集的查询,本来想找一些开源的框架来完成,后来发现可以用sql搞定的话,就懒得优化了。配置如下:

    ComplexQuery包含三个属性,List<Long> andTagIds; List<Long> orTagIds; List<Long> notTagIds;

    <select id="listArticleIdsByQuery" resultClass="java.lang.Long" parameterClass="ComplexQuery">

            select distinct(article_id) from article_tag_relation where 1 = 1

    <dynamic>

        <isNotEmpty prepend="and" property="andTagIds">

                <iterate conjunction="and" property="andTagIds">

    article_id in (select distinct(article_id) from article_tag_relation where tag_id = #andTagIds[]#)

    </iterate>

                </isNotEmpty>

                <isNotEmpty prepend="and" property="notTagIds">

    <iterate conjunction="and" property="notTagIds">

    article_id not in (select distinct(article_id) from article_tag_relation where tag_id = #notTagIds[]#)

    </iterate>

                </isNotEmpty>

        <isNotEmpty prepend="and" property="orTagIds">

    <iterate conjunction="," open="tag_id in (" close=")" property="orTagIds">

    #orTagIds[]#

    </iterate>

                </isNotEmpty>

    </dynamic>

            limit #startRow#,#pageSize#

        </select>


    展开全文
  • 大学毕业之后就没认认真真学习过数据库相关的知识,特别是SQL语句,要用到的时候上百度,不用的时候根本不会往这块想,今天有幸面试了一位候选人,期间问了一个如何查询两表的非交集部分,题目其实不难,实现的思路...

    大学毕业之后就没认认真真学习过数据库相关的知识,特别是SQL语句,要用到的时候上百度,不用的时候根本不会往这块想,今天有幸面试了一位候选人,期间问了一个如何查询两表的非交集部分,题目其实不难,实现的思路也很多,但说实话如果对一个不经常使用SQL语句的人来说,实现起来还是有点困难的。笔者采用的验证环境是在MySQL系统下。

    一、实现

    1. 登录数据库
      首先,登录MySQL的默认数据库test,我们的验证从这里开始。主要涉及3条命令,如下:

      mysql -uroot -p # 在linux环境下登录mysql数据库
      show databases; – 显示mysql下有所有数据库
      use test; – 进入test数据库
      show tables; – 显示test数据库下的所有表
      在这里插入图片描述

    2. 建表
      为了测试方便,我们把模型简化了,我们就建一个只有3个字段的人员表,ID、Name、Age,其中ID为主键。然后插入相应的数值,建表语句如下:

      mysql> create table tb_a(ID int,Name varchar(255),Age int,PRIMARY KEY (ID));
      mysql> create table tb_b(ID int,Name varchar(255),Age int,PRIMARY KEY (ID));
      mysql> INSERT INTO tb_a VALUES (1,‘Ada’,10);
      mysql> INSERT INTO tb_a VALUES (2,‘Bon’,12);
      mysql> INSERT INTO tb_a VALUES (3,‘Cat’,15);
      mysql> INSERT INTO tb_b VALUES (2,‘Bon’,12);
      mysql> INSERT INTO tb_b VALUES (4,‘Dog’,18);
      mysql> INSERT INTO tb_b VALUES (5,‘Egg’,20);

      最终的表如下:
      在这里插入图片描述

    3. 实现
      3.1 交集
      JOIN是标准SQL语句解决交集问题的关键字,衍生出INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN等。在这里我们只是用到简单的JOIN…ON…语句,交集命令如下:SELECT a.ID,a.Name,a.Age FROM tb_a AS a JOIN tb_b AS b ON a.ID =b.ID;
      在这里插入图片描述
      当然除了上面做何种思路,也可以通过IN关键字达到同样目的,代码如下:SELECT * FROM tb_a WHERE ID IN (SELECT ID FROM tb_b);
      在这里插入图片描述
      3.2 并集
      UNION就是标准的SQL语句解决表合并问题,UNION是去重的,UNION ALL是不去重的,具体代码是:SELECT * FROM tb_a UNION SELECT * FROM tb_b;
      在这里插入图片描述
      3.3 差集
      由于MySQL不支持EXCEPT字段,所以我们采用NOT IN,思路是先取A中所有记录再过滤掉B中有的记录,具体语句是:SELECT * FROM tb_a WHERE ID NOT IN (SELECT ID FROM tb_b);
      在这里插入图片描述
      3.4 非交集
      回到本文的出发点,SQL语句中并没有一个关键字是解决非交集问题的,但是通过上面三个功能的实现,我们可以把非交集转换为A-B的差集并上B-A的差集的并集,具体语句是:SELECT * FROM tb_a WHERE ID NOT IN (SELECT ID FROM tb_b) UNION SELECT * FROM tb_b WHERE ID NOT IN (SELECT ID FROM tb_a);
      在这里插入图片描述
      最后总结一下JOIN相关的内容如下:
      在这里插入图片描述

    参考文献
    1.sql求两表的并集、交集、非交集、差集、结果集排序
    2.SQL 教程
    3.SQL 连接(JOIN)

    展开全文
  • 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格...
  • 要求通过标签(tag)进行文章查询,三个查询条件:交,并,。ComplexQuery:List andTagIds; List orTagIds; List notTagIds; sqlmapselect如下,通过sql搞定,不过性能堪忧,以后有机会用一些其他工具...
  • 求集合A、B 非交集的部分方法一:循环一个数组,利用list的contains方法方法二:多次循环匹配,利用list的contains方法方法三:利用removeAll方法方法四:利用map 方法有很多种,我能想到哪些尽量写出来,大家可以...
  • 数组交集并集,

    2019-09-26 14:57:46
    let arr1=new Set([1,2,3,1,2,3,4,5,3,32,2]);let arr2=new Set([1,4,32,4,3,6,8,9,9,]);let arr3=new Set([...arr1].filter((item)=> arr2.has(item))) ...|||||||||||||||||||去数组的交集 ...
  • 要求是,如果矩形没有交集,返回-1, 有交集,返回交集的面积。 int area(rect const& a, rect const& b) { ... } 补齐代码,我认为好的代码应该是简洁的。别用库。你可以写你的辅助函数,宏定义...
  • 场景: 数据库有有两个字段.开始时间<startTime>,和结束时间<endTime>,指定一个时间段(a,b),a表示开始时间,b表示...用sql直接判断无交集的语句可能也有,但是目前没有想到,只想到有交集的语句...
  • 从国美电器“红筹上市”,到收购香港上市永乐电器,再到尚无定论借道中关村回归A股,其运作时间与商务部涉案官员存在多处“交集”。 操纵股价,还是涉嫌行贿? 11月23日,一位调查部门人士向本报记者透露,...
  • 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余...
  • //count用来存储两数列的交集,n用来记录交集的个数 for (i = 0; i ; i++) { for (j = 0; j ; j++) { if (array1[i] == array2[j]) { count[num] = array1[i]; //两数列中元素相等时,赋值给count ...
  • 有序链表的交集

    千次阅读 2014-11-01 21:48:36
    输入分2行,分别在每行给出由若干个正整数构成的非降序序列,用-1表示序列的结尾(-1不属于这个序列)。数字用空格间隔。 输出格式说明: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有...
  • var array1 = [ {"Num": "A " },{"Num": "B" }]; var array2 = [ {"Num": "A ","Name": "t1 " }, {"Num": "B","Name": "t2"}, {"Num": "C " ,"Name": "t3 "}]; var result = []; for(var i = 0;...
  • 两个有序链表的交集

    2020-05-24 11:10:36
    输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格...
  • 具体是这样,有两个时间段,根据这两个时间段的交集非交集部分,拆分出至多三个时间段。当时就用了最基础最笨方法,两个时间段起止时间相互比较区分多种情况进行拆分。不知道各位有没有遇到过相似问题,或者...
  • 输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列,数字间用空格分开,结尾不能有多余空格...
  • 1. 求并集的思路就是对合并的两个数组去重,去重最简单的办法就是使用 Set 集合...2. 求交集的思路就是轮询一个数组在另一个数组中是否出现,可通过 indexOf 或者 incloud 判断; 3. 求差集的思路是取并集中的非交集。
  • select*from ---t1,t2改成你需要提取表就行了 (select* fromt1 minus select* fromt2) uni...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 696
精华内容 278
关键字:

交集的非