zoukankan      html  css  js  c++  java
  • SQL SERVER 2008的EXCEPT和INTERSECT

    EXCEPT:用第一个集合与第二个集合比较,返回只存在于第一个集合,但不在第二个集合中的值。

    INTERSECT:比较两个集合,返回两个集合都有的行。

    我们新建一个表

    CREATE TABLE projectPerson

    (

      personId varchar(10),

      projectId varchar(10),

      PRIMARY KEY (personId,projectId)

    )

    GO


    INSERT INTO projectPerson Values('joeb','projBlg')
    INSERT INTO projectPerson Values('joeb','projLitter')
    INSERT INTO projectPerson Values('fredf','projBlg')
    INSERT INTO projectPerson Values('homerr','projLitter')
    INSERT INTO projectPerson Values('stevegr','projBlg')
    INSERT INTO projectPerson Values('stevegr','projLitter')

    GO

    --查看谁参与了其中一个项目获两个项目都参加

    select personId
    from projectPerson
    where projectId='projBig'
    union
    select personId
    from projectPerson
    where projectId='projLitter'

    查看只参加projLittle项目但不参与projBig项目的人

    以前sql server 2000的写法

    select personId
    from projectPerson as projLittle
    where projectId='projLitter'
      and not exists (select *
         from projectPerson as projBig
           where projBig.projectId='projBig'
           and projBig.personId=projLittle.personId)

    现在只需要用except即可

    select personId
    from projectPerson
    where projectId='projLitter'    
    except
    select personId
    from projectPerson
    where projectId='projBig'

    两个项目都参加的人的信息可用intersect:

    select personId
    from projectPerson
    where projectId='projLitter'    
    intersect
    select personId
    from projectPerson
    where projectId='projBig'

  • 相关阅读:
    若依问题解决(一)
    Java 将两个List转换为流合并List
    后端返回前端文本换行显示,只能在前端再转换
    Java Stream() 流根据对象属性去重
    vue 当前端传回后端,后端使用实体类接收数据显示报错
    js 中 getMonth() 获取的月份比现实少一个月
    vue连个数组对比
    JS链接跳转方法
    ElementUI--表格toggleRowSelection无法选中
    Linux 常用命令
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2765081.html
Copyright © 2011-2022 走看看