Един прост подход използва агрегиране:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
Горната заявка е използваема , което означава, че подходящ индекс може да използва idSkill
колона. Помислете за добавяне на този индекс за допълнителна производителност:
CREATE INDEX idx ON skills (idUser, idSkill);
Редактиране:
Използвайте тази заявка за 3 елемента:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;