簡単なアプローチの1つは、集計を使用します。
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
上記のクエリはsargable 、適切なインデックスがidSkill
を使用できることを意味します 桁。パフォーマンスを向上させるために、このインデックスを追加することを検討してください:
CREATE INDEX idx ON skills (idUser, idSkill);
編集:
このクエリを3つのアイテムに使用します:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;