这是我的桌子:
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
我希望查询将两个表组合在一起,但是我只想在其中一个记录没有'RB'的情况下使用记录。
我在下面有一个常规查询
Select * from TableA a, TableB b, where a.primarykey = projectid
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
但是我不确定如果它有'RB'怎么排除所有记录。
这就是我希望得到的结果:
projectid Name Category Description
2 Josh QB Male
2 Josh WR Male
3 Allen QB Male
有关尝试使用此工具的任何提示或建议?
答案 0 :(得分:4)
您可以通过这种方式利用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
答案 1 :(得分:1)
这可能是使用WHERE子句中的子查询来完成此操作的一种方法
select b.projectid,b.Name,b.Category,a.Description
from TableA a,TableB b
where a.primarykey=b.projectid
and
a.primarykey <> ( select projectid from tableb b where b.category ='RB');