En simpel tilgang bruger aggregering:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
Ovenstående forespørgsel er sargerbar , hvilket betyder, at et passende indeks kan bruge idSkill
kolonne. Overvej at tilføje dette indeks for yderligere ydeevne:
CREATE INDEX idx ON skills (idUser, idSkill);
Rediger:
Brug denne forespørgsel til 3 elementer:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;