Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách đếm kết quả MySQL trong mối quan hệ có-nhiều-qua

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nhập CSV vào phpmyadmin

  2. Hiển thị dữ liệu từ Truy vấn tùy chỉnh (Các bảng đã kết hợp) trong vùng chứa tìm kiếm liferay

  3. Chạy các tập lệnh tệp SQL từ một chương trình Java

  4. Tạo khóa chính mysql mà không có chỉ mục được phân cụm?

  5. Tìm các mẫu số tương tự trong bảng