Có lẽ là đơn giản nhất, sạch sẽ nhất và nhanh nhất chỉ dành cho hai học sinh :
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;
Bạn không cần tham gia vào student
bảng cho điều này - ngay khi bạn biết danh sách stud_id
bạn quan tâm đến.
Đối với bất kỳ số lượng sinh viên nào , Truy vấn của Martin thuận tiện hơn. Bạn có thể đơn giản hóa theo cách tương tự:
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;
Yêu cầu (stud_id, club_id)
đó tất nhiên là duy nhất và các mục trong danh sách đó cũng là duy nhất.