Ако приемем, че използвате MySQL и приемем, че вашата таблица има името test
, и ако приемем, че и двете колони са типове низове:
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;
Моля, имайте предвид, че това решение може да е много бавно в зависимост от броя на записите, които имате, и в зависимост от средната дължина на низовете в list
поле.
Ако имате нужда от нещо по-бързо, мисля, че не може да бъде едно запитване. Може би ще трябва да напишем запомнена процедура или някаква приложна логика за това или да използваме допълнителни таблици или колони и поредица от множество SQL изрази.