Eu sugiro fortemente
normalize
seus dados como outros sugeriram. Com base no seu design atual, você pode usar
FIND_IN_SET
para alcançar o resultado desejado. 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
Ver demonstração
Executando esta consulta em seu conjunto de dados fornecido, você obterá uma saída como abaixo:
| id | name | total |
|----|-------|-------|
| 1 | Tom | 2 |
| 2 | Bob | 2 |
| 3 | Zack | 3 |
| 4 | Dan | 3 |
| 5 | Casey | 2 |
Uma leitura obrigatória
O armazenamento de uma lista delimitada em uma coluna de banco de dados é tão ruim assim?
Mais
É assim que seus
vidoes
tabela ficaria se você normalizasse seus dados:vidoes
id member_id