Tôi thực sự khuyên bạn nên normalize
dữ liệu của bạn như những người khác đề xuất.
Dựa trên thiết kế hiện tại của bạn, bạn có thể sử dụng FIND_IN_SET
để đạt được kết quả bạn muốn.
SELECT
M.id,
M.name,
COUNT(*) total
FROM members M
INNER JOIN videos V ON FIND_IN_SET(M.name,V.members) > 0
GROUP BY M.name
ORDER BY M.id
Chạy truy vấn này trên tập dữ liệu đã cho của bạn, bạn sẽ nhận được kết quả như bên dưới:
| id | name | total |
|----|-------|-------|
| 1 | Tom | 2 |
| 2 | Bob | 2 |
| 3 | Zack | 3 |
| 4 | Dan | 3 |
| 5 | Casey | 2 |
A phải đọc
Việc lưu trữ danh sách được phân tách trong cột cơ sở dữ liệu có thực sự tồi tệ không?
Thêm
Đây là cách vidoes
của bạn bảng sẽ trông giống như nếu bạn chuẩn hóa dữ liệu của mình:
videos
id member_id