sql - 使用字段作为选择标准在 2 个表之间查找不匹配
问题描述
我以下表为例。
表格1
企业标识 | 姓 | 名 |
---|---|---|
1 | 史密斯 | 约翰 |
2 | 琼斯 | 鲍勃 |
3 | 公民 | 简 |
表 2
企业标识 | 请求ID | 请求描述 |
---|---|---|
1 | 1 | 车 |
1 | 2 | 文凭 |
1 | 3 | 电话 |
2 | 1 | 车 |
2 | 3 | 电话 |
3 | 1 | 车 |
3 | 2 | 文凭 |
3 | 3 | 电话 |
我想返回表 1 中没有表 2 中没有文凭的条目的所有记录,例如 ReqID = 2
此查询将所有记录返回给我,但不仅仅是 Bob Jones 的记录。因为他们有其他记录,ReqID <> 2. 有没有办法对它们进行分组来实现这一点?
SELECT Table1.EMPID,
FROM Table1 LEFT JOIN Table2 ON Table1.EMPID = Table2.EMPID
WHERE Table2.ReqID <> 2;
解决方案
使用exists
:
SELECT t1.*,
FROM Table1 t1
WHERE NOT EXISTS
(select 1 from Table2 t2
where t1.EMPID = T2.EMPID and t2.reqdesc = 'Diploma');
推荐阅读
- java - Spring Boot中预处理第三方库方法
- ajax - Jquery Datatable:数据不会使用ajax加载
- arrays - 如何匹配两个数组之间的变量
- c# - 获取显示器坐标和分辨率/多个显示器
- sublimetext3 - Sublime Text C89 自动补全
- broadleaf-commerce - 阔叶树中的 Sku 对象中的 SkuAttributes 没有响应
- c++ - std::regex 比 VC2015U3 上的 boost::regex 慢得多
- python - 如何在整个程序的生命周期内唯一标识 Python 中的一个类
- sql-server - 无法远程连接到 SQL Server(TCP 错误)
- java - 可打包自定义对象的问题 - Android