Mungkin paling sederhana, terbersih, dan tercepat hanya untuk dua siswa :
SELECT count(*) AS ct
FROM student_club x
JOIN student_club y USING (stud_id)
WHERE x.club_id = 30
AND y.club_id = 50;
Anda tidak perlu bergabung dengan student
tabel untuk ini sama sekali - segera setelah Anda mengetahui daftar stud_id
Anda tertarik.
Untuk sejumlah siswa , Permintaan Martin lebih nyaman. Anda dapat menyederhanakan dengan cara yang sama:
SELECT count(*) AS ct
FROM (
SELECT stud_id
FROM student_club
WHERE club_id IN (30, 50)
GROUP BY 1
HAVING count(*) = 2 -- adapt to number of items in list
) x;
Memerlukan (stud_id, club_id)
unik tentu saja, dan item daftar itu juga unik.