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ステートメントを使用する必要があります。