我有2个表,我试图获取包含Job_ID的表1,该表在2019年2月18日之前尚未完成表2中的进度。 表1. [Test_Job]
1263 | Sing
1410 | Jump
2309 | Run
3456 | Swim
表2。[Test_Progress]
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
预期:
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)
但是我还是得到这个
1263 | Sing
1410 | Jump
2309 | Run
《唱歌与跑步》工作已在2019年2月18日之前完成,但仍在此处。请帮助我修复SQL中的错误点。预先谢谢你。
答案 0 :(得分:0)
我认为您想在这里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日的完整工作条目的记录。因此,符合此条件的此类工作应是在该日期或之前完成的工作。