Ervan uitgaande dat u MySQL gebruikt, en ervan uitgaande dat uw tabel de naam test
heeft , en ervan uitgaande dat beide kolommen stringtypes zijn:
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;
Houd er rekening mee dat deze oplossing erg traag kan zijn, afhankelijk van het aantal records dat u heeft en afhankelijk van de gemiddelde lengte van de strings in de list
veld.
Als je iets sneller nodig hebt, denk ik dat het geen enkele vraag kan zijn. Misschien zouden we daarvoor een opgeslagen procedure of een toepassingslogica moeten schrijven, of extra tabellen of kolommen en een reeks van meerdere SQL-instructies moeten gebruiken.