我有一个表emp_skills,其中emp_id和skill_id为两列。现在,
SELECT * FROM emp_skills where skill_id REGEXP '^[2,3]$'
输出拥有2或3或两者的emp_id。我想要的是那些同时拥有2和3作为技能的人的emp_id。 Skill_id是整数
上述查询的输出示例
EMP_ID SKILL_ID
401 2
405 2
401 3
405 3
407 3
现在我想要的只是前四行,因为407没有2作为skill_id
答案 0 :(得分:3)
来自您的短语both 2 and 3 as their skill_id
,我认为您不需要regex
。您所需要的只是count
,group by
和having
SELECT EMP_ID
FROM emp_skills
WHERE skill_ID IN (2,3)
GROUP BY EMP_ID
HAVING COUNT(EMP_ID) = 2 -- the total number of skill_ID
您需要将记录数与where
子句中提供的ID总数相匹配。
答案 1 :(得分:0)
假设skill_id
为INTEGER
列,则可以使用IN
子句轻松实现此目的:
SELECT *
FROM emp_skills
WHERE skill_id IN(2,3);