Jeden jednoduchý přístup používá agregaci:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
Výše uvedený dotaz je sargable , což znamená, že vhodný index může používat idSkill
sloupec. Zvažte přidání tohoto indexu pro zvýšení výkonu:
CREATE INDEX idx ON skills (idUser, idSkill);
Upravit:
Použijte tento dotaz pro 3 položky:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;