1

emp_idとskill_idを2つの列として持つテーブルemp_skillsがあります。今、

SELECT * FROM emp_skills where skill_id REGEXP '^[2,3]$' 

2つまたは3つ、あるいはその両方を持っている人のemp_idを出力します。私が欲しいのは、skill_idとして2と3の両方を持っているもののemp_idです。Skill_idは整数です

上記のクエリの出力例

EMP_ID     SKILL_ID
401        2   
405        2
401        3
405        3
407        3

407にはskill_idとして2がないため、最初の4行だけが必要です。

4

2 に答える 2

3

あなたのフレーズからboth 2 and 3 as their skill_id、私はあなたがこれを必要としないと思いますregex。必要なのはcount、、group byhaving

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の総数と一致させる必要があります。

SQLFiddleデモ

于 2012-09-11T07:23:55.243 に答える
0

列と仮定するとskill_id、これは次の句INTEGERを使用して簡単に実現できます。IN

SELECT * 
FROM emp_skills 
WHERE skill_id IN(2,3);
于 2012-09-11T07:22:42.820 に答える