仅选择不满足特定条件的表

时间:2019-03-22 09:44:07

标签: sql-server

我有2个表,我试图获取表1,其中包含Job_ID,但尚未完成表2中的进度。 表1. [工作]

Job_ID(密钥)| GroupID

1410        |    A  
2309        |    B  
3456        |    C  

表2。[进度]

工作ID |百分比

1410        |    10
1410        |    50
1410        |    60
2309        |    50
2309        |    100
3456        |    100

预期:

Job_ID(密钥)| GroupID

1410        |    A  

我的SQL查询是:

SELECT FROM Job,(SELECT DISTINCT * FROM Progress WHERE Percent<100) AS PGR WHERE Job.Job_ID = PGR.Job_ID

但是我还是得到这个

Job_ID(密钥)| GroupID

1410        |    A  
2309        |    B  

我的逻辑仅获得百分比<100的Job_ID,但是我在stackoverflow中找不到SQL的特定方式。在这种情况下,请帮助我。

4 个答案:

答案 0 :(得分:1)

您可以从查询下面获取帮助。

SELECT * 
FROM table1 a
WHERE NOT EXISTS (SELECT 1 FROM table2 b WHERE a.job_id = b.job_id and percentage = 100)

答案 1 :(得分:0)

不存在

select
    a.* from job a   
   where not exists (select 1 from progres b 
                      where a.job_id =b.job_id and b.Percent=100
                    )

答案 2 :(得分:0)

使用LEFT JOINNULL检查吗?

SELECT T1.JobID, T2.GroupID
FROM Table1 T1
     LEFT JOIN T2 ON T1.JobID = T2.JobId
                 AND T2.Percent = 100
WHERE T2.JobID IS NULL;

答案 3 :(得分:-1)

尝试一下

 select
    job.*
    from
    job

    where 
not exists (select 1 from progres where progres.job_id =job.job_id)