如果一条记录包含特定值,如何排除整个组?

con*_*ner 2 sql oracle

这是我的表格:

TableA      
primarykey  Name    Description 
1           John    Male 
2           Josh    Male 
3           Allen   Male 

TableB      
projectid   Name    Category 
1           John    QB
1           John    RB
1           John    WR
2           Josh    QB
2           Josh    WR
3           Allen   QB 
Run Code Online (Sandbox Code Playgroud)

我想要一个查询来组合两个表,但我只想要其中一个记录没有“RB”的记录。

我有一个一般性查询如下

Select * from TableA a, TableB b, where a.primarykey = projectid
Run Code Online (Sandbox Code Playgroud)
projectid   Name    Category    Description
1           John    QB          Male
1           John    RB          Male
1           John    WR          Male
2           Josh    QB          Male
2           Josh    WR          Male
3           Allen   QB          Male
Run Code Online (Sandbox Code Playgroud)

但我不确定如何排除所有包含“RB”的记录。

这就是我想要的结果:

projectid   Name    Category    Description
2           Josh    QB          Male
2           Josh    WR          Male
3           Allen   QB          Male
Run Code Online (Sandbox Code Playgroud)

关于使用什么来尝试获得这个的任何提示或建议?

Avi*_*Avi 5

您可以通过这种方式使用 not contains 和 join 来确保您不会获得任何以“RB”为类别的 ID。

select t1.projectId, t1.name, t1.category, t.description from tableA  t 
join tableB t1 on t1.projectid = t.primarykey 
where not exists (select 1 from tableB t2 where t1.projectID = t2.projectID and t2.category = 'RB') 
order by t1.projectID ;


PROJECTID   NAME    CATEGORY    DESCRIPTION
 2           Josh      WR        Male
 2           Josh      QB        Male
 3           Allen     QB        Male
Run Code Online (Sandbox Code Playgroud)