且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySQL:选择联接表匹配所有值的记录

更新时间:2022-11-13 16:54:27

这可以做到:

SELECT EmpId, Name
FROM
(
   SELECT em.ID as EmpId, em.Name, es.ID as SkillID 
   FROM Employee em 
   INNER JOIN Emp_Skills es ON es.Emp_ID = em.ID
   WHERE es.Skill_ID IN ('1', '2')
 ) X
GROUP BY EmpID, Name
HAVING COUNT(DISTINCT SkillID) = 2;

在此处进行提示:

不同之处在于,如果同一位员工具有两次列出的技能.

The distinct is just in case the same employee has the skill listed twice.

感谢测试数据.