Jag skulle starkt rekommendera att normalize
dina uppgifter som andra föreslog.
Baserat på din nuvarande design kan du använda FIND_IN_SET
för att uppnå det resultat du vill ha.
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
När du kör den här frågan på din givna datamängd får du utdata som nedan:
| id | name | total |
|----|-------|-------|
| 1 | Tom | 2 |
| 2 | Bob | 2 |
| 3 | Zack | 3 |
| 4 | Dan | 3 |
| 5 | Casey | 2 |
Ett måste att läsa
Är det verkligen så dåligt att lagra en avgränsad lista i en databaskolumn?
Mer
Så här är dina vidoes
Tabell skulle se ut så här om du normaliserar dina data:
vidoes
id member_id