sql-server - 选择特定的存在但仍包含不需要的结果
问题描述
我有 2 个表,我试图获取包含 Job_ID 的表 1,该表在 2019 年 2 月 18 日之前尚未完成表 2 中的进度。表 1. [Test_Job]
Job_ID(键)|内容
1263 | Sing
1410 | Jump
2309 | Run
3456 | Swim
表 2. [Test_Progress]
Job_ID|百分比|日期
1410 | 10 | 2019-02-04
1410 | 50 | 2019-02-11
1410 | 60 | 2019-02-18
2309 | 50 | 2019-02-04
2309 | 100 | 2019-02-11
3456 | 100 | 2019-02-18
1263 | 20 | 2019-02-04
1263 | 100 | 2019-02-11
预期的:
Job_ID(键)|GroupID
1410 | Jump
我的 SQL 查询是:
SELECT * FROM Test_Job
WHERE EXISTS (SELECT 1 FROM Test_Progress
WHERE Test_Progress.[Percent]<100
AND Test_Progress.Date<'2019/02/11'
AND Test_Job.Job_ID=Test_Progress.Job_ID)
但我仍然得到这个
Job_ID(键)|GroupID
1263 | Sing
1410 | Jump
2309 | Run
Sing and Run 工作已在 2/18/2019 之前完成,但仍然在这里。请帮我修复我的 SQL 中的错误点。先感谢您。
解决方案
我想你想要NOT EXISTS
这里:
SELECT *
FROM Test_Job tj
WHERE NOT EXISTS (SELECT 1 FROM Test_Progress tp
WHERE tp.Date <= '2019-02-18' AND
tp.Percent = 100
tj.Job_ID = tp.Job_ID);
这表示要查找我们在 2019 年 2 月 18 日之后找不到已完成工作条目的记录。因此,符合此条件的此类工作应该是在此日期或之前完成的工作。
推荐阅读
- angular - 在科尔多瓦插件之间传递数据到角度
- r - 将 ggsignif 与分组条形图和 facet_wrap 一起使用不起作用
- android - Firestore - 获取子集合的父文档
- angular - 什么时候初始化模板驱动的表单控件?
- python - 如何发送带有graphql突变的对象数组
- sql - 如何在不使用内置函数的情况下在 Teradata sql 中获得这种类型的结果
- python - 如何在取平均值的同时合并日期时间列上的值
- c - “警告:除以零 [-Wdiv-by-zero]”当不除以零时
- reactjs - 列内带有下拉菜单的材料 UI 表
- javascript - Jquery切换图标显示越来越少