Dengan asumsi bahwa Anda menggunakan MySQL, dan dengan asumsi bahwa tabel Anda memiliki nama test
, dan dengan asumsi bahwa kedua kolom adalah tipe 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;
Perlu diketahui bahwa solusi ini mungkin sangat lambat tergantung pada jumlah record yang Anda miliki dan tergantung pada panjang rata-rata string dalam list
lapangan.
Jika Anda membutuhkan sesuatu yang lebih cepat, saya pikir itu bukan permintaan tunggal. Mungkin kita harus menulis prosedur tersimpan atau logika aplikasi untuk itu, atau menggunakan tabel atau kolom tambahan dan serangkaian beberapa pernyataan SQL.