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

Mysql COUNT (*) trên nhiều bảng

Sử dụng các lựa chọn con bạn có thể làm:

SELECT co.*, 
    (SELECT COUNT(*) FROM modules mod WHERE mod.course_id=co.id) AS moduleCount, 
    (SELECT COUNT(*) FROM videos vid WHERE vid.course_id=co.id) AS vidCount
FROM courses AS co
ORDER BY co.id DESC

Nhưng hãy cẩn thận vì đây là một truy vấn đắt tiền khi các khóa học có nhiều hàng.

CHỈNH SỬA: Nếu các bảng của bạn khá lớn, truy vấn sau sẽ hoạt động tốt hơn nhiều (có lợi cho việc đọc và hiểu phức tạp hơn).

SELECT co.*, 
    COALESCE(mod.moduleCount,0) AS moduleCount,
    COALESCE(vid.vidCount,0) AS vidCount
FROM courses AS co
    LEFT JOIN (
            SELECT COUNT(*) AS moduleCount, course_id AS courseId 
            FROM modules
            GROUP BY course_id
        ) AS mod
        ON mod.courseId = co.id
    LEFT JOIN (
            SELECT COUNT(*) AS vidCount, course_id AS courseId 
            FROM videos
            GROUP BY course_id
        ) AS vid
        ON vid.courseId = co.id
ORDER BY co.id DESC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqldump nhiều hơn một bảng?

  2. Mysql tham gia và tổng là kết quả nhân đôi

  3. Kết nối cơ sở dữ liệu MySQL từ Android

  4. Truy vấn con tương quan MySQL trong cú pháp JOIN

  5. Thiết kế cơ sở dữ liệu cho nhận xét và trả lời