Supondo que você esteja usando o MySQL e supondo que sua tabela tenha o nome
test
, e supondo que ambas as colunas sejam do tipo string:SELECT
t1.id, count(t2.list)
FROM
(test t1 LEFT JOIN test t2 ON
(t2.list LIKE CONCAT('%,', t1.id, ',%')) OR
(t2.list LIKE CONCAT('%,', t1.id)) OR
(t2.list LIKE CONCAT(t1.id, ',%')))
GROUP BY t1.id;
Esteja ciente de que esta solução pode ser muito lenta dependendo do número de registros que você possui e dependendo do comprimento médio das strings na
list
campo. Se você precisa de algo mais rápido, acho que não poderia ser uma única consulta. Talvez tivéssemos que escrever um procedimento armazenado ou alguma lógica de aplicativo para isso, ou usar tabelas ou colunas adicionais e uma série de várias instruções SQL.