Zakładając, że używasz MySQL i zakładając, że Twoja tabela ma nazwę test
i zakładając, że obie kolumny są typu 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;
Należy pamiętać, że to rozwiązanie może być bardzo powolne w zależności od liczby posiadanych rekordów i średniej długości ciągów na list
pole.
Jeśli potrzebujesz czegoś szybciej, myślę, że nie może to być pojedyncze zapytanie. Być może musielibyśmy w tym celu napisać procedurę składowaną lub jakąś logikę aplikacji albo użyć dodatkowych tabel lub kolumn i serii wielu instrukcji SQL.