Satu pendekatan sederhana menggunakan agregasi:
SELECT idUser
FROM skills
WHERE idSkill IN (4, 9)
GROUP BY idUser
HAVING MIN(idSkill) <> MAX(idSkill);
Kueri di atas sargable , artinya indeks yang sesuai dapat menggunakan idSkill
kolom. Pertimbangkan untuk menambahkan indeks ini untuk kinerja tambahan:
CREATE INDEX idx ON skills (idUser, idSkill);
Sunting:
Gunakan kueri ini untuk 3 item:
SELECT idUser
FROM skills
WHERE idSkill IN (2, 4, 9)
GROUP BY idUser
HAVING COUNT(DISTINCT idSkill) = 3;