Un enfoque simple utiliza la agregación:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
La consulta anterior es sargable , lo que significa que un índice apropiado puede usar el idSkill
columna. Considere agregar este índice para obtener un mayor rendimiento:
CREATE INDEX idx ON skills (idUser, idSkill);
Editar:
Utilice esta consulta para 3 elementos:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;