我有两个带有StaffID
表中StaffDesignation
多个记录的表,我需要唯一的值。
select * from StaffMst where StaffID in (select StaffID from StaffDesignation where DesignationID in (6,9))
这意味着两个记录都将出现“或”条件(6或9),但是我需要“和”条件(6和9),如何获得此?
最佳答案
如果我正确理解,这是一个“ set-in-sets”子查询。如果要为所有具有6和9标记的员工记录StaffMst
:
select m.*
from StaffMst m join
StaffDesignation sd
on m.StaffId = sd.StaffId
group by m.StaffId
having sum(sd.DesignationId = 6) > 0 and
sum(sd.DesignationId = 9) > 0;
Haven子句中的每个条件都在计数一种类型的名称。
> 0
表示至少存在一个。因此,以上都检查。如果需要,可以将
and
更改为or
:select m.*
from StaffMst m join
StaffDesignation sd
on m.StaffId = sd.StaffId
group by m.StaffId
having sum(sd.DesignationId = 6) > 0 or
sum(sd.DesignationId = 9) > 0;