Ett enkelt tillvägagångssätt använder aggregering:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
Frågan ovan är sargbar , vilket betyder att ett lämpligt index kan använda idSkill
kolumn. Överväg att lägga till detta index för extra prestanda:
CREATE INDEX idx ON skills (idUser, idSkill);
Redigera:
Använd den här frågan för 3 objekt:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;