sql语句用于连接两个表和条件

时间:2014-05-12 05:49:38

标签: mysql sql inner-join

我在StaffID表中有两个包含多个StaffDesignation记录的表,我需要唯一的值。

select * from StaffMst where StaffID in (select StaffID from StaffDesignation where DesignationID in (6,9))

表示'或'条件(6或9)两个记录都会来,但我需要'和'条件(6和9),如何得到这个?

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,这就是" set-within-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;

having子句中的每个条件都计算一种指定的数量。 > 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;