选择仅属于特定部门的用户

2024-06-28

我有下表,其中包含两个字段,即 a 和 b ,如下所示:

create table employe
(
    empID varchar(10),
    department varchar(10)
);

插入一些记录:

insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
             ('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');


select * from employe;
empID   department
------------------
A101    Z
A101    X
A101    Y
A102    Z
A102    X
A103    Z
A103    Y
A104    X
A104    Y
A105    Z
A106    X

Note:现在我想显示唯一且仅属于该部门的员工Z and Y。 所以根据条件唯一的员工A103应该显示,因为他只属于 到部门Z and Y。但员工A101不应该出现,因为他属于Z,X, and Y.

预期结果:

如果条件是:Z and Y那么结果应该是:

empID
------
A103

如果条件是:Z and X那么结果应该是:

empID
------
A102

如果条件是:Z,X and Y那么结果应该是:

empID
------
A101

Note: 我想在where仅子句(不想使用group by and having条款),因为我要把这个包含在另一个中where also.


这是一个无余数关系除法 (RDNR)问题。看到这个article https://www.simple-talk.com/sql/learn-sql-server/high-performance-relational-division-in-sql-server/Dwain Camps 的论文为此类问题提供了许多解决方案。

第一个解决方案

SQL小提琴 http://sqlfiddle.com/#!6/6d9cf/2/0

SELECT empId
FROM (
    SELECT
        empID, cc = COUNT(DISTINCT department)
    FROM employe
    WHERE department IN('Y', 'Z')
    GROUP BY empID
)t
WHERE
    t.cc = 2
    AND t.cc = (
        SELECT COUNT(*)
        FROM employe
        WHERE empID = t.empID
    )

第二种解决方案

SQL小提琴 http://sqlfiddle.com/#!6/6d9cf/3/0

SELECT e.empId
FROM employe e
WHERE e.department IN('Y', 'Z')
GROUP BY e.empID
HAVING
    COUNT(e.department) = 2
    AND COUNT(e.department) = (SELECT COUNT(*) FROM employe WHERE empID = e.empId)

不使用GROUP BY and HAVING:

SELECT DISTINCT e.empID
FROM employe e
WHERE
    EXISTS(
        SELECT 1 FROM employe WHERE department = 'Z' AND empID = e.empID
    )
    AND EXISTS(     
        SELECT 1 FROM employe WHERE department = 'Y' AND empID = e.empID
    )
    AND NOT EXISTS(
        SELECT 1 FROM employe WHERE department NOT IN('Y', 'Z') AND empID = e.empID
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择仅属于特定部门的用户 的相关文章

  • SQL LIKE 实际上是如何工作的

    例如 当我有这样的字符串时 ABBBCSLAK JDK ASAAAAFJKDSKJFSDF 当我像这样使用 SQL 时 SELECT FROM table WHERE column LIKE JDK 当服务器访问 JDK 时到底会发生什么
  • 如何在SQL Server数据库的所有表的所有列中搜索特定字符串?

    我们想要在拥有大约 120 个表的所有数据库中搜索一个字符串 即 Hello World 我们考虑过像 mysql dump 一样进行转储 但它以奇怪的 bak 格式出现 应在每个表的每一列中进行搜索 任何类型的脚本都可以做到这一点 或者这
  • 部署 Visual Studio 2010 数据库项目

    我有一个 Visual Studio 2010 数据库项目 我想从中生成一个脚本 这只是将该数据库放到另一台机器上 问题是我找不到 对此的解决方案 当我开始这个项目时 我从开发电脑上的数据库导入了 shema 生成了架构对象 所有表和脚本都
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • mysql 中的 SELECT UNION 和 ORDER BY.. 如何?

    我想从单个表中获取所有行 但以不同的方式对它们进行排序 例如我写 SELECT FROM table1 ORDER BY fieldA ASC LIMIT 3 UNION SELECT FROM table1 ORDER BY FieldB
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • SQL Server 存储过程更新不适用于 ASP.Net C# GridView RowUpdating

    我遇到了问题 但没有抛出任何错误 发生的情况是 我有一个存储过程正在驱动我的更新 但我无法更新 gridview 我击中了Update链接按钮 但它实际上并没有更新记录 这是我的存储过程 ALTER PROCEDURE dbo CompDe
  • 从 MySql 迁移到 Sql Server 2008

    我有大约 200 GB 的 Mysql 转储文件 现在我需要迁移到 Sql server 2008 那么我应该遵循什么方法 我应该继续逐行 sql 语句还是有任何适合我的要求的 GUI 工具 微软 SQL Server 迁移 Assista
  • SQL 中WITH 子句的使用指南

    我了解如何使用WITH递归查询子句 但我在理解它的一般用途 功能时遇到问题 例如 以下查询更新一条记录 其 id 是通过使用按时间戳返回第一条记录 id 的子查询来确定的 update global prospect psp set sta
  • varchar 值的转换溢出了 int 列

    对于某些值 nReservationID SELECT phoneNumber CASE WHEN ISNULL rdg2 nPhoneNumber 0 0 THEN ISNULL rdg2 nMobileNumber 0 ELSE ISN
  • 如何在 MS ACCESS 中使用与 Oracle Rownum 相同的函数

    我遇到一个问题 我做了一个可以通过检测滚动位置来加载数据的功能 该功能是用SQL语句 Rownum 制作的 它只在Oracle中有效 但在ACCESS中无效 我想查询数据并进行处理 ID value 1 aa 3 bb 使用 Rownum
  • 行入列并分组

    我有一个如下所示的查询 SELECT OrganizationName OrganizationID ReceivableStatus InvoiceFee FROM v InvoicesFreelanceOutstanding ORDER
  • 为什么为 DATETIME 值定义加法运算符而不为 DATE 定义?

    我知道解决方法是使用DATEADD对于这两种数据类型 我想了解为什么语言设计者选择为一种数据类型而不是另一种数据类型定义此运算符 当您尝试直接在DATE DECLARE tomorrow DATE CONVERT DATE GETDATE
  • SQL 缓存依赖关系的性能问题

    我正在开发一个项目 我们正在考虑将 SQLCacheDependency 与 SQL Server 2005 2008 一起使用 我们想知道这将如何影响系统的性能 所以我们想知道以下问题 SQLCacheDependency 对象 查询通知
  • 检索存储过程的先前版本

    我今天修改了一个存储过程 但之后我意识到它是错误的 所以我想把它恢复回来 有什么方法可以获取之前修改的存储过程或最后日期的存储过程 我也没有任何备份 谢谢 不直接在 SQL Server 中 除非您在源代码管理或其他地方保留了脚本 否则您唯
  • SELECT MySQL 字段包含子字符串[重复]

    这个问题在这里已经有答案了 使用 LIKE 在 MySQL 中非常常见 我们这样使用它 WHERE field LIKE substring 我们有一个子字符串 并且字段有完整的字符串 但我需要的是相反的东西 我在字段中有子字符串 所以 我
  • Android 和 Azure 移动服务:使用 invokeAPI 返回记录集

    我正在尝试一些非常简单的事情 我有一个名为 missingvehiclesfrominventoryjob 的自定义 API 它只是从标准 SQL 查询返回记录集 我可以在我的 WinForms 和 Windows Phone 应用程序中轻
  • 如何在 JPA/Hibernate 中执行本机 SQL 脚本?

    我有一个带有数据库转储的 SQL 脚本 我如何使用 Hibernate 执行它EntityManager 我这样尝试过 EntityManager manager getEntityManager Query q manager creat
  • NHibernate 排序(SQL 作为第二个选项)

    我正在使用 NHibernate 作为我的 ORM 并且正在尝试对一些数据进行排序 数据需要分页检索 我的请求表中的两列是 UrgencyID 和 CreateDate UrgencyID 是包含静态数据的 Urgency 表的 FK 1
  • 从 WiX 引导 SQL Express?

    我正在开发一个 WPF 应用程序 并使用 WiX 作为安装程序 我想开始使用 SQL Express 2012 但希望首先解决安装程序问题 我正在寻找使用 WiX 检测 引导 安装 升级和卸载 SQL Express 2012 的完整示例

随机推荐

  • AngularJS 应用程序:如何将 .js 文件包含到 index.html 中

    我是 angularJS 的新手 我设法使用 AngularJS 构建了一个phonegap应用程序 该应用程序正常并且运行良好 问题是 现在我对 angularJS 的工作原理有了更多的了解 至少我认为我已经了解了 我担心我的应用程序文件
  • 找不到 securityToken 的有效键映射

    我正在开发测试应用程序 用于在 MVC ASP net Visual studio 2013 中显示经过身份验证的身份声明 我已通过以下方式从活动目录进行身份验证 1 在解决方案中添加新的mvc项目 2 单击更改身份验证 3 选择组织账户
  • SQL Server XQuery 返回错误

    我正在 SQL Server 2012 中对 XML 数据类型列执行查询 数据示例如下
  • Scala Play 2.3 IntelliJ 14 *社区版 - 是否可以在没有命令行激活器命令的情况下运行项目

    From http blog jetbrains com scala 2012 12 28 a new way to compile http blog jetbrains com scala 2012 12 28 a new way to
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer
  • 如何将 NSAppTransportSecurity 添加到 Cordova 项目

    我正在从事一个 ionic cordova 项目 该应用程序需要配置 iOS 9 版本的应用程序传输安全例外 有谁知道如何将以下配置添加到 cordova 项目配置文件中 配置 xml
  • Microsoft SQL 数据库的 WebSocket 侦听器

    我目前正在开发一个项目 该项目必须使用 WebSockets 作为将数据传输到客户端的方式 基础设施看起来像这样 客户端 gt Web 服务器 gt Microsoft SQL 数据库 我想最理想的情况应该是这样的 客户端打开一个到服务器的
  • android.view.WindowLeaked - 使用对话框和新意图时

    我已经尝试了 stackoverflow 上提供的所有可能的解决方案 但我仍然在 logcat 中遇到此错误 活动 com xyz MainActivity 泄露了最初在此处添加的窗口 com android internal policy
  • Java 可变 BigInteger 类

    我正在使用 BigIntegers 进行计算 该计算使用一个调用 multiply 大约 1000 亿次的循环 并且从 BigInteger 创建新对象使其非常慢 我希望有人编写或找到了 MutableBigInteger 类 我在 jav
  • FCM(Firebase Cloud Messaging)如何发送到所有手机?

    我创建了一个小型应用程序 能够从 FCM 控制台接收推送通知 我现在想做的是向所有使用 API 安装应用程序的 Android 手机发送推送通知 这就是我完全迷失的地方 有没有办法在不收集所有注册ID的情况下将其发送到所有手机 这是否仅适用
  • 在 Python ssl 客户端/服务器的情况下自动输入密码短语

    我需要创建客户端 服务器应用程序以将文件从客户端发送到服务器 我使用简单的 ssl 套接字并使用证书进行身份验证 ms socket socket socket AF INET socket SOCK STREAM ssl sock ssl
  • 使用 CASE 语句的多个条件

    我需要查询一些数据 这是我构建的查询 但对我来说效果不佳 在本示例中 我使用 AdventureWorks 数据库 SELECT FROM Purchasing Vendor WHERE PurchasingWebServiceURL LI
  • 如何排除文件/文件夹以删除[重复]

    这个问题在这里已经有答案了 如何删除文件夹中的所有内容并排除特定文件夹和文件 以 tar 为例 tar exclude folder 编辑 我可以删除文件和文件夹 注意 运行以下命令时请小心 find type f grep v NameT
  • 如何滚动具有 3 个列表视图的布局

    我有一种布局 此布局包含 3 个列表视图 列表视图中的 wrap content 数据的高度不固定 当Listview有一个liitel巨大的数据时 数据会转到下面并且数据无法看到 所以我想用所有三个Listview滚动视图 这是怎么可能的
  • WHQL认证过程有多痛苦?

    您能估计一下 WHQL Windows 硬件徽标 认证过程有多痛苦吗 我看到有一个 43 页的分步指南 其中第一步是安装 Windows Server 2008 R2 x64 提交之前完成整个准备过程大约需要多长时间 然后需要多长时间才能得
  • 数据透视表、页面过滤器 - 使用日期过滤

    我正在尝试过滤具有日期值的页面过滤器 但我在使用时不断出现错误 PivotFilters Add type xlBefore value 5 1 2015 我还尝试了下面的代码 Dim nd As Long nd CLng Date 90
  • 如何扩展现有的 SASS 引导网格类

    我试图让我的代码更干净 所以我有类似的东西 div class col sm 6 col md 6 div class feature list item div class feature list item icon container
  • 张量流错误utf-8 OS X Sierra

    我已经在 OS X Sierra 上安装了 TensorFlow 和 Anaconda 我在安装过程中没有遇到任何问题 写出典型的例子 import tensorflow as tf a tf constant 5 name input a
  • 选择仅属于特定部门的用户

    我有下表 其中包含两个字段 即 a 和 b 如下所示 create table employe empID varchar 10 department varchar 10 插入一些记录 insert into employe values