Een eenvoudige benadering maakt gebruik van aggregatie:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
De bovenstaande zoekopdracht is sargable , wat betekent dat een geschikte index de idSkill
. kan gebruiken kolom. Overweeg deze index toe te voegen voor extra prestaties:
CREATE INDEX idx ON skills (idUser, idSkill);
Bewerken:
Gebruik deze zoekopdracht voor 3 items:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;