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

COUNT truy vấn phức tạp trong MySQL

Đề xuất của X-Zero về việc thêm "tín dụng của người tải lên" vào dữ liệu là cách tốt nhất để giữ cho truy vấn đơn giản. Nếu đó không phải là một tùy chọn, hãy thực hiện liên kết bên trong giữa userprofile_videoinfo và userprofile_videocredit để dễ dàng loại bỏ các bản sao:

SELECT u.id, u.full_name, COUNT(DISTINCT v.video_id) as credit_count
FROM userprofile_userprofile u
LEFT JOIN (SELECT vi.video_id, vi.uploaded_by_id, vc.profile_id as credited_to_id
    FROM userprofile_videoinfo vi
    JOIN userprofile_videocredit vc ON vi.id = vc.video_id
    ) v ON u.id = v.uploaded_by_id OR u.id = v.credited_to_id
GROUP BY u.id, u.full_name
ORDER BY credit_count DESC

Truy vấn con có thể hữu ích để tạo dưới dạng một dạng xem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa truy vấn mysql UNION

  2. mysqli_stmt ::num_rows () trả về giá trị sai

  3. Cách tạo cột tùy chỉnh với các ký tự tăng tự động

  4. Trên RDS, tôi có thể tạo Bảng trong Bản sao đã đọc không có trên Bản chính không?

  5. Làm cách nào để cộng hai kết quả đếm (*) trên hai bảng khác nhau?